یک وبلاگ دیگر از یک برنامه نویس دیگر
لینوکس
یادداشتهای من درباره لینوکس (یا شاید بهتره بگم گنو/لینوکس)
وضعیت آب و هوا
بهمن ۵م
یکی از مسائلی که گاهی برای من مهم میشه، دونستن وضعیت آب و هوای بعضی شهرهاست. خصوصا اینکه به خاطر کارم توی هفته چندین روز باید به یه شهر دیگه برم.
معمولا چند تا سایت رو دم دست داشتم و چک میکردم وضعیت رو، ولی بعد از تنظیم conky که همین چند روز پیش اتفاق افتاد و من دست از تنبلی برداشتم، به این نتیجه رسیدم داشتن وضعیت آب و هوایی هر دو شهر خودم و شهر محل کارم توی conky کاملا واجبه :)) این شد که گشتم دنبال اسکریپتهای مربوط به آب و هوا توی سایتهای مختلف، و معروفترینشون weather.com بود که متاسفانه رایگان نیست، و کلا به درد ما نمیخوره چرا که دست کم شهرهایی که من باهاش کار داشتم رو نداشت.
این شد که گشتم دنبال یک جایگزین و accuweather.com بهترین گزینه بود.
یه قابلیت جالب این سایت، دادن وضعیت آب و هوا به صورت RSS برای یک نقطه خاصه. کافیه کد شهر رو داشته باشی، مثلا برای تهران این لینک میشه :
http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=MEA|IR|IR026|TEHRAN|&u=1
metric میتونه صفر باشه برای فارنهایت و ۱ باشه برای سیلیسیوس. u هم ربطی به قضیه نداره و فقط فرمت پاسخ رو از rss به xml عوض میکنه که اینجا مد نظر نبود.
میمونه locCode که شاید بیشترین وقت من برای پیدا کردن این locCode گذشت :)) ساختار سایت accuweather کلا تغییر کرده و این کدها رو من که نتونستم تو خود سایت پیدا کنم، و در نهایت با بدبختی تونستم یه فایل حاوی خیلی از این کدها پیدا کنم که میذارمش اینجا و شما میتونید دانلودش کنید و امیدوارم شهرتون توش باشه :)
اما اسکریپت، که من اونو از توی فروم Archlinux پیداش کردم و کار خودم نیست :
# !/usr/bin/bash
METRIC=1 #Should be 0 or 1; 0 for F, 1 for C
LOCCOD="MEA|IR|IR026|TEHRAN"
if [ -z $1 ] && [ -x $LOCCOD ] ; then
echo
echo "USAGE: $0 [locationcode]"
echo
exit 0;
elif [ ! -z $1 ] ; then
LOCCOD=$1
fi
wget -q http://rss.accuweather.com/rss/liveweather_rss.asp\?metric\=${METRIC}\&locCode\=$LOCCOD -O - | awk \
'/Currently:/ {CurWeather=$0}
/[0-9] Forecast<\/title>/ {nr=NR+5}
NR==nr {postIndx[++x]=$0}
# x>2 {exit}
END{
split(CurWeather,tmp,"Currently: ")
split(tmp[2],tmp1,"<")
CurWeather=sprintf("%s",tmp1[1])
sub(":",",",CurWeather)
for(x in postIndx){
split(postIndx[x],tmp,";|&")
split(tmp[1],tmp,">")
split(tmp[2],statement," C ") # substitute C for F if metric differs
split(tmp[2],temp)
forecast[++y]=sprintf("%d to %dC %-15s",temp[5],temp[2],statement[3])
}
printf("Now: %s\nToday: %s\nTomorrow: %s",CurWeather,forecast[1],forecast[2])
}'
خروجیش یه چیزی تو این مایه هاست :
Now: Intermittent Clouds, -4C Today: -6 to 0C Increasing clouds Tomorrow: -5 to 0C Clouds and sun
حالا برای استفاده از خروجی توی conky خیلی ساده میتونید چنین چیزی رو توی تنظیمات conky بذارید :
${execi 300 /path/to/script/myaccuw.sh}
پ.ن : به هیچ وجه نمیتونم صفحه post-new رو توی WP باز کنم! برای زدن پست جدید مجبور شدم تو پیشخوان یه پیشنویس ایجاد کنم و بعد اونو ویرایش کنم (عجیبه که میتونم ویرایش کنم بی مشکل!) کسی راه حل یا دلیلی سراغ نداره برای این قضیه؟؟؟؟
پیشنویسها – Bash
مرداد ۲۸م
خیلی پیش میاد که این وبلاگ به صورت یک آرشیو برای خودم مفید میشه! چون من خیلی فراموش کارم و زیاد پیش میاد که یه کار رو که بارها انجام دادم فراموش کنم!
جدیدا از پستهای پیشنویس هم استفاده میکردم برای ذخیره کردن یه سری چیزها، راههای ساده تر هست، میدونم، ولی یه باره شد، و چند تا نکته رو، وقتی خونه نبودم تو وبلاگ ذخیره کردم. حالا به این نتیجه رسیدم که خیلی از اینها میتونه برای دیگران هم بدرد بخور باشه. اینه که پستهای پیشنویس که یه کم پر بار تر بشن منتشرشون میکنم، و این هم یکی از اون پستهای پیشنویسه، که البته یه کم توضیحات به هر تیکش اضافه کردم :
ادامه مطلب
ویدئو کست دوم : پایپها در گنو/لینوکس – بخش دوم و پایانی
مرداد ۲۰م
و بالاخره با کلی تاخیر :) قسمت دوم ویدئوکست من، پایپها در گنو/لینوکس – بخش دوم.
تو این قسمت در مورد پایپهای بی نام و نامدار صحبت شده.
اولین ویدئوکست من :) – پایپها در گنو لینوکس بخش اول
مرداد ۳م
این اولین باره که سعی میکنم یه ویدئوکست درست کنم :) زیاد جالب هم نشده با اینکه دست کم دو روز داشتم سروکله میزدم باهاش.
به هر حال این اولین تجربه تو این زمینه است. اگه مشکلی داره ببخشید و اگر هم مشکل قابل رفعی هستش، بگید تا برای کارهای بعدی رفعش کنم.
این قسمت درباره پایپها ( البته بیشتر هدایت خروجی/ورودی برنامه ها به/از فایل ) هستش. قسمت بعدیش هم به زودی میذارم.
– دلیل اصلی من این پست فرید احمدیان بود، و اینکه من قالب صدای تنها رو زیاد دوست نداشتم و تصمیم گرفتم اونو با ویدئو ترکیب کنم، و اینکه معتقدم بالاخره باید یه کاری انجام بشه :)
– فعلا فقط روی youtube هستش و اصل فایل هم توی Dropbox :) تا ببینم چی میشه :D
اصل فایل هم اینجاست.
HipHop
تیر ۱۱م
– این فقط یه معرفی ساده یه پروژه است نه راهنمای کاملش.
یکی از معروفترین سایتهای فعلی، فیسبوکه و شکی در این نیست (نمیدونم با وجود گوگل پلاس وضع همینطوری میمونه یا نه؟). ولی این سایت همینجوری که تبدیل نشده به اینی که الان هست! یک تیم برنامه نویسی قدرتمند هم پشت این پروژه هست و چیزی که امروز میخوام معرفی کنم، دلیلی بر این مدعاست.
پروژه HipHop for PHP پروژه ای است که بر اساس نیازهای آنها -فیس بوکی ها- ساخته شده. پروژه ای که یه کار – به ظاهر – ساده انجام میده. خیلی ساده، کدهای PHP رو تبدیل میکنه به C++ و بعد اون رو کامپایل میکنه، در نهایت کل پروژه تبدیل میشه به یه فایل اجرایی تکی، که خودش یک وب سرور کامل هم هست.
اینجوری، سرعت اجرای کد به طرز کاملا محسوسی بالاتر میره و فشار اجرای مفسری PHP به شدت کم میشه . البته هنوز فایلهای استاتیک به صورت مجزا از این فایل وجود دارند ولی دیگه PHP وجود نداره، کد باینری واقعی هست. یه چیزی مثل vala که تبدیل میشه به C . مثل پروژه هایی که حتما دیدید و فایل PHP رو توی یک فایل اجرایی میچپونن هم نیست -مثلا این پروژه-.
این پروژه یه بازنویسی از کل کد PHP هستش نه یه پروژه مشتق شده از PHP. یه سری توابع از دست میرن (مثلا تابع eval) ولی در نهایت توابعی هم که از دست میرن جایگزین مناسبی دارن :) مثلا همین eval یه جورایی از دید من یه تابع خیلی خطرناک محسوب میشه و استفاده ازش احتیاط خیلی زیادی رو میطلبه!
این برنامه در کل ممکنه برای ما هم خیلی کاربردی نباشه چون به درد همه جا نمیخوره. کلا بعید میدونم به همین راحتی رو ویندوز کامپایل بشه! ولی گاهی وقتها میتونه کارتون رو راه بندازه،مثلا ما الان نیاز به یه وب سرویس داریم تو یه پروژه که روی سرورهای داخلی یه شرکت قراره نصب بشه و فقط یک ارتباط ساده رو با دیتابیس برقرار کنه و از طرفی نصب آپاچی و PHP هم یه جورایی از طرف مدیر شبکه منع شده -یه جور سرور radius هستش و میخوان سبک بمونه – خوب بهتر از HipHop چی میتونه به ما کمک کنه؟
حالا میرسیم به چگونگی استفاده از این به اصطلاح HipHop!
ادامه مطلب




