دوستای من تو لینکدین چیکاره هستن؟ بازنمایی اطلاعات با R

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

در این مجموعه، امروز با الهام از کار مشابه در این فروم (که متاسفانه دیدنش نیازمند ساخت اکانت است با R و بسته تازه منتشر شده ای به اسم Rlinkedin که می تونه این زبون عددی / آماری رو به سایت لیندکین که شبکه اجتماعی بازار کار تخصصی است وصل کنه و به این برسه که دوستان من اکثرا چنین عناوین شغلی ای دارن:

title

اما چطوری؟ برای شروع باید اول بسته Rlinkedin رو نصب کنیم که با توجه به بسته devtools کار راحتی است:

require(devtools)
install_github("mpiccirilli/Rlinkedin")
require(Rlinkedin)

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

in.auth <- inOAuth()

این دستور یک لینک بهم می ده که کافیه تو براوزر بازش کنم و توی لیندکین لاگین کنم. حالا بسته Rlinkedin به لیندکین وصل شده و کار راحته.

در قدم اول همه کانتکت‌هایی که دارم رو توی یک ساختار ذخیره می کنم:

my.connections <- getMyConnections(in.auth)

و حالا مثلا بخش عناوین شغلی این ساختار رو به شکل متنی در یک متغیر می ریزم:

text <- toString(my.connections$title)

و با استفاده از بسته wordcloud و بعد از کمی تمیز کاری (حذف کاما، کوچیک کردن کل حروف و ...) و شمردن تکرار کلمات، ابر کلمات رو می کشم. در ابر کلمات اندازه فونت هر کلمه مرتبط با تعداد تکرار اون کلمه است و در نتیجه مثلا می بینیم که بیشتر دوست‌های من Developer هستن که نکته مثبتی است:

title

و البته معلومه که حالا که اینجا هستیم با خطی مثل

text <- toString(my.connections$industry)

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

industries

اگر خوشتون اومد و روی لینکدین هستین و معقول می دونین، خوشحال می شم پروفایل من روی لینکدین رو روی BIG DATA یا Hadoop یا R یا Data Science یا NewSQL یا هر چیزی که دوست دارین من رو Endorse کنین که البته نمی دونم دقیقا به چه دردم خواهد خورد ولی حداقلش اینه که هی روی MySQL و PHP‌ و شبکه و لینوکس ایندورس نمی شم! خوش[بین] باشین و خندون و از اطلاعات و قشنگی‌شون لذت ببرین.

دوره کامل ویدئویی لینوکس جادی – آزمون ۱۰۱ و کاملا رایگان

فیلم آموزشی لینوکس رایگان

آپدیت: این مطلب قدیمی است. نسخه کامل دوره ویدئویی لینوکس جادی در این آدرس منتشر شده.

بالاخره بعد از دو ماه نفس گیر و پر کار و پر از سینک کردن صدا و تصویر و رندر و نوشتن و ادیت کردن، دوره آموزش تصویری لینوکس LPIC1 یا همون الپیک امتحان ۱۰۱ آماده شده.

ال.پی.آی.سی. این روزها مرسوم‌ترین مدرک لینوکس است و برای گرفتن سطح یک اون باید دو امتحان متفاوت ۱۰۱ و ۱۰۲ رو بگذرونیم. دوره فعلی امتحان ۱۰۱ رو پوشش می ده.

اسپانسری شرکت مبین نت باعث شده ویدئوهای آمادگی آزمون ۱۰۱ ال پی آی سی و امتحان کامپتیا به رایگان در دسترس شما باشن.

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

مطمئنا کامنت ها و به اشتراک گذاشتن و غیره می تونه روحیه بخش شروع تهیه مطالب مربوط به آزمون ۱۰۲ باشه که در کنار این دوره، یک آدم رو به یک ادمین خوب لینوکسی تبدیل میکنن.

آپدیت: این مطلب قدیمی است. نسخه کامل دوره ویدئویی لینوکس جادی در این آدرس منتشر شده.

چرا گنو/لینوکس رو دوست دارم: اضافه کردن اسم فایل به تبلچرهای گیتار

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

من تعداد زیادی فایل تبلچر (شیوه اجرای آهنگ) گیتار دارم که اسم خواننده بالاشون نوشته نشده. در نتیجه من نمی تونم سریع توی ذهنم بیارم که آهنگ چه شکلی است. مثلا وقتی بالای آهنگ نوشته شده «عسل» کمک بسیار بزرگی است اگر Ebi رو هم بالاش ببینم. این Ebi اسم فایل است پس من یکسری فایل عکس دارم که می خوام اسم فایل رو روی عکس فایل اضافه کنم

بله! لینوکس که ترکیبی از ابزارهای قدرتمند است، راه حلی عالی داره. اما یک برنامه نویس خوب همیشه اول مسائل رو در ساده ترین حالت حل می کنه و بعد مساله رو پیچیده می کنه. فرض کنیم اصولا فقط یک عکس داریم که می خوایم روش بنویسیم My Happy Text. اسم فایل هم هست Bijan Mortazavi 006. اگر بتونیم این مساله رو حل کنیم، یک قدم جلو افتادیم. در اصل من دارم مساله رو به سه بخش تقسیم می کنم:

1- اضافه کردن یک متن دلخواه به یک عکس
2- در آوردن اسم یک فایل
3- ترکیب کردن دو قدم قبلی برای هر چند تا فایل که داشتیم

قدم اول: نوشتن روی فایل

ساده است. بسته Image Magick ابزاری داره به اسم convert که می تونه تقریبا هر کاری با یک تصویر بکنه! مثلا این تصویر:

Ebi 005

با دستور

$ convert Ebi\ 005.JPG -pointsize 43 -background Khaki label:'My Happy Text' +swap -gravity Center -append out.jpg

تبدیل می شه به:

out

جذاب نیست؟ بخصوص که روی تصویر چیزی ننوشتیم بلکه بالاش کمی تصویر اضافه کردیم! حالا می ریم سراغ قدم دوم.

قدم دوم: درآوردن فهرست فایلها

من احتیاج دارم اسم فایل ها رو بگیرم. اولش که ساده است؛ به لینوکس می گم همه فایل هایی که تهشون JPG هست رو بهم بده:

$ find . -name "*JPG" 
./Bijan Mortazavi 005.JPG
./Ebi 015.JPG
./Ebi 018.JPG
./Ebi 016.JPG
./Darush 007.JPG

بعد کافیه بگم اون /. اول رو حذف کنه:

a$ find . -name "*JPG" | sed "s/\.\///"
Bijan Mortazavi 005.JPG
Ebi 015.JPG
Ebi 018.JPG
Ebi 016.JPG
Darush 007.JPG

و چیز دیگه که بهش احتیاج نداریم اون JPG. آخر است:

$ find . -name "*JPG" | sed "s/\.\///" | sed "s/\.JPG//"
Bijan Mortazavi 005
Ebi 015
Ebi 018
Ebi 016
Darush 007

و قدم دوم هم تموم می شه!

قدم سوم: چسبوندن قدم های قبلی

اینجا گزینه ها خیلی زیادن. بریم جلو ببینیم چی می شه. مثلا من می تونم با دستور xargs ورودی قدم دوم رو استفاده کنم. اصل صفرم برنامه نویسی جادی رو یادتونه دیگه؟ «برنامه پیچیده ای که کار می کنه، برنامه ساده ای بوده که کار می کرده» پس بذارین در ساده ترین حالت، هر کدوم از خطوط ورودی رو بدیم به یک دستور اکو:

$ find . -name "*JPG" | sed "s/\.\///" | sed "s/\.JPG//" \
    | xargs -L1 -I THIS echo my command will work on \"THIS\" happily 
my command will work on Bijan Mortazavi 005 happily
my command will work on Ebi 015 happily
my command will work on Ebi 018 happily
my command will work on Ebi 016 happily
my command will work on Darush 007 happily

عالی! ما قهرمانیم. الان ورودی قدم دوم رو خط به خط دادیم به دستور اکو. (سوییچ I می گه این خط ورودی باید کجای دستور قرار بگیره). بذارین یک ضرب سعی کنیم اصل برنامه رو اجرا کنیم و خروجی رو بریزیم توی دایرکتوری out و البته قبلش طبق همون اصل اول برنامه نویسی جادی، با گذاشتن یک echo جلوی دستوری که ساختیم یک تست هم می گیریم:

$ find . -name "*JPG" | sed "s/\.\///" | sed "s/\.JPG//" | xargs -L1 -I THIS echo convert \"THIS.JPG\" -pointsize 43 -background Khaki label:\'THIS\' +swap -gravity Center -append \"out/THIS.jpg\"
convert "Bijan Mortazavi 005.JPG" -pointsize 43 -background Khaki label:'Bijan Mortazavi 005' +swap -gravity Center -append "out/Bijan Mortazavi 005.jpg"
convert "Ebi 015.JPG" -pointsize 43 -background Khaki label:'Ebi 015' +swap -gravity Center -append "out/Ebi 015.jpg"
convert "Ebi 018.JPG" -pointsize 43 -background Khaki label:'Ebi 018' +swap -gravity Center -append "out/Ebi 018.jpg"
convert "Ebi 016.JPG" -pointsize 43 -background Khaki label:'Ebi 016' +swap -gravity Center -append "out/Ebi 016.jpg"
convert "Darush 007.JPG" -pointsize 43 -background Khaki label:'Darush 007' +swap -gravity Center -append "out/Darush 007.jpg"

بله ظاهرا که همه چیز عالیه. بزن بریم! اکو رو حذف می کنم ولی با اینکه دستورهای بالا درست هستن، به دلیلی که نمی دونم چیه دستورات درست اجرا نمی شن. پس کارم رو راحت می کنم:

$ find . -name "*JPG" | sed "s/\.\///" | sed "s/\.JPG//" | xargs -L1 -I THIS echo convert \"THIS.JPG\" -pointsize 43 -background Khaki label:\'THIS\' +swap -gravity Center -append \"out/THIS.jpg\" > commands.sh
$ sh commands.sh 
$ ls out/
Bijan Mortazavi 001.jpg  Bijan Mortazavi 005.jpg  Darush 003.jpg  Darush 007.jpg  Darush 011.jpg   Delkash 003.jpg  Ebi 004.jpg  Ebi 008.jpg  Ebi 012.jpg  Ebi 016.jpg
Bijan Mortazavi 002.jpg  Bijan Mortazavi 006.jpg  Darush 004.jpg  Darush 008.jpg  Darush 012.jpg   Ebi 001.jpg      Ebi 005.jpg  Ebi 009.jpg  Ebi 013.jpg  Ebi 017.jpg
Bijan Mortazavi 003.jpg  Darush 001.jpg           Darush 005.jpg  Darush 009.jpg  Delkash 001.jpg  Ebi 002.jpg      Ebi 006.jpg  Ebi 010.jpg  Ebi 014.jpg  Ebi 018.jpg
Bijan Mortazavi 004.jpg  Darush 002.jpg           Darush 006.jpg  Darush 010.jpg  Delkash 002.jpg  Ebi 003.jpg      Ebi 007.jpg  Ebi 011.jpg  Ebi 015.jpg  Ebi 019.jpg

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

www.guitarestan.com

حالا می تونیم این کدها رو بدیم به دوستمون که روی سیستم خودش روی چند صد تبلچر دیگه اجرا کنه و این می شه یک فعالیت شاد و خوشحال که هم باعث می شه مهارتهای لینوکسی مون بالا بره، هم بهمون خوش بگذره هم مشکل یک دوستمون حل بشه.

هر مردی باید روش خودآزمایی برای سرطان بیضه رو بلد باشه: بازی آگاهانه با تخم‌ها

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

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

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

بذارین اول نگاهی بندازیم به این منطقه:

sc

و روش تستی که قراره هر ماه یکبار انجام بشه هم به این شکل است:

tse

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

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

نوامبر خوبی داشته باشین تا جمعه بعدی.

دوره آنلاین لینوکس در EDX

سایت edr.org یکی از مراکز خوب آموزشی آنلاینه و خوشبختانه یک دوره جدید اضافه کرده: پایه‌های لینوکس. برای گذروندن این دوره آشنایی عمومی با کامپیوتر و نرم افزارهای کامپیوتری کافیه و نیاز به هیچ چیز خاصی ندارین به جز حدود ۴۰ تا ۶۰ ساعت حوصله و بلد بودن (یا علاقمندی به یاد گرفتن) انگلیسی و یک پهنای باند قابل قبول. حتما سری بزنین و از دنیای لینوکس لذت ببرین.

درسته که اسمش «پایه ها» است ولی مباحثش هم فلسفه گنو/لینوکس رو شامل می شه هم کارهای روزمره مثل محیط های گرافیکی و هم مسائل پیشرفته تر مثل پروسس ها و ادیتورهای متن و … و هر سر فصل بخش های مختلفی داره که خودشون شامل متن، فیلم، شبیه ساز ترمینال برای تمرین دستورات و این چیزها هستن و چیز باحالی هم که داره امکان دوبرابر کردن سرعت فیلم ها است تا اگر بلدین سریع نگاه کنین و برین درس بعدی. در ویدئوی بالا ، توروالدز می گه چرا این دوره رو به شما پیشنهاد می کنه (:

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

جادی تی وی ۰۰۴ – اضافه کردن شمارنده بازدید کننده های وبگذر به وبلاگ بلاگفا

در قسمت چهارم از رادیو گیک به درخواست یک بیننده جواب می دیم: «چطوری برای وبلاگ بلاگفام شمارنده بذارم» و حین اینکار کمی در مورد اچ تی ام ال و اینکه پشت صفحات وب چی می گذره حرف می زنیم. ساده و سر راست و ده دقیقه (: در این شماره از جادی تی وی با استفاده از وبگذر برای وبلاگ پارناس یک شمارنده می سازیم و یاد می گیریم که پشت صفحه وب چیه و از کجا می شه اسکریپت بهش اضافه کرد و چطوری مطمئن شد که اونجاست.

سطح: مبتدی
موضوعات: شمارنده، وبلاگ، بلاگفا، وبگذر، ویزیتور، جاوااسکریپت

جادی تی وی ۰۰۳ – داک پد برای ساخت سایت‌های استاتیک

توی شماره سوم جادی تی وی، سری می زنیم به سایت سازهای استاتیک و با داک پد که یکی از بهترین نمونه‌هاش است، آرشیو رادیوی عالی چهرازی رو می سازیم که اگر یادتون باشه در شماره قبلی براش دامین راه انداخته بودیم. با ما باشین تا وب۵ (که ترکیبی است از وب۲ و اچ تی ام ال ۵) رو ضایع کنیم!

در این شماره با بوت استرپ و ماسونری شاد می شیم و از ای آی ویوید و میلاد تشکر می کنیم (:

شایان ذکره که با کمک دوستان در این شماره به تکنولوژی فشرده سازی نسبی تصویر دست پیدا کردم و ممنون می شم اگر می شه بهترش هم کرد بگین چطوری (ترجیحا با avconv). الان فایل چهل و پنج دقیقه ای، ۹۹ مگ شده. همچنین بنا به درخواست بسیار شما، مطمئنا دو شماره رو به گیت اختصاص خواهیم داد! دیگه چی؟

جادی تی وی شماره ۰۰۲ – اتصال دامین و دی ان اس و هاست به همدیگه برای داشتن یک وبسایت

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

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