Archive for 2009

Pause

۱۳۸۸/۰۹/۰۹ ۲۲:۰۱ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۹/۰۹ دسته بندی : 2

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

 

دو ویژگی CSS برای زبانهای راست به چپ از جمله فارسی

۱۳۸۸/۰۹/۰۸ ۰:۱۱ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۹/۰۸ دسته بندی : ، ، ، 3

اخیرا در ورژن جدید فایرفاکس (3.6) دو مقدار از ویژگی text-align که جزو استاندارد CSS 3 هستند، پشتیبانی شده است. این دو ویژگی از آن جهت می تونه مهم باشه که برای طراحی سایتهایی با پشتیانی هر دو زبانهای راست به چپ و چپ به راست، کار طراح وب رو بسیار آسان می کنه.

این دو مقدار برای ویژگی text-align عبارتند از:

start: تعیین خواهد کرد که متون در سمت آغاز نوشته با توجه به جهت به کار رفته تراز شوند. به عبارت بهتر در صورتی که مقدار direction که به عنصر مورد نظر اعمال می شود برابر با ltr باشه، مقدار start دقیقا همانند left عمل خواهد کرد و متون به سمت چپ تراز خواهند شد. در صورتی هم که مقدار direction برابر با rtl باشد، مقدار start دقیقا همانند right عمل خواهد کرد و متون به سمت راست تراز خواهند شد.

به مثالهای زیر توجه کنید:
<html>
<body style="direction:ltr">
<p style="text-align:start">Left side of page.</p>
</body>
</html>

متن در سمت چپ قرار می گیرد.
<html>
<body style="direction:rtl">
<p style="text-align:start">Right side of page.</p>
</body>
</html>

متن در سمت راست قرار می گیرد.

end: تعیین خواهد کرد که متون در سمت آخر صفحه یا نوشته با توجه به جهت به کار رفته تراز شوند. به عبارت بهتر در صورتی که مقدار direction که به عنصر مورد نظر هاعمال می شود برابر با ltr باش، مقدار end دقیقا همانند right عمل خواهد کرد و متون به سمت راست تراز خواهند شد. برای مقدار rtl نیز عکس این مطلب اعمال خواهد شد.

همانطور که مطمئنن متوجه شدید عملکرد این دو مقدار بستگی به مقدار direction دارد. این مورد باعث خواهد شد که بدون نیاز به نوشتن کدهای اضافی برای css به راحتی مقصود خود رو اعمال کنید.

پشتیبانی مرورگرها از start و end

به علت نسبتا جدید بودن این دو مقدار مرورگرهای کمی از آنها پشتبانی می کنند. در این میان فقط سه مرور Firefox, safari و chrome این دو مورد رو پیاده سازی کرده اند.

مرورگرهای safari و chrome به علت داشتن موتور مشترک Webkit از نسخه 525 به بعد آن پستیانی به عمل می آورند. به عبارت بهتر Safari نسخه 3.1 و chrome نسخه 1
مرورگر Firefox مقدار start رو از نسخه 1 و مقدار end رو از نسخه 3.6 به بعد پیاده سازی کرده است.

اطلاعات بیشتر در مورد text-align

 

Closure Tools

۱۳۸۸/۰۸/۲۷ ۲۳:۵۸ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۸/۲۷ دسته بندی : ، ، ، ، 3

Closure Tools

مدتی نزدیک به دو هفته است که گوگل یکی از پروژه های موفق خودش رو که پشت تعدادی از سرویس هایش یعنی Gmail ، Docs و Maps قرار دارد  رو اوپن سورس کرده.

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

Closure Compiler

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

برای امتحان این ابزار به صورت آنلاین به اینجا مراجعه کنید:

http://closure-compiler.appspot.com/home

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

Closure Inspector

یک افزونه فایرفاکس هست که به افزونه Firebug اضافه می شه. کار اصلی این افزونه ایجاد امکان دیباگ کردن کدهای جاوا اسکریپتی که obfuscated شده هستند است. همچنین این ابزار اماکاتی مانند source mapping و stack trace پیشرفته تر و امکان unit test رو به فایرفاکس شما اضافه خواهد کرد.

برای رفع اشکال کد های اکثر سایتها این ابزار یک کارگشای حرفه ای برای شما خواهد بود.

Closure Library

کتابخانه ای استاندارد شده توسط گوگل برای جاوا اسکریپت هست. این کتابختانه امکانات زیادی مانند طراحی رابط کاربر ، unit testing ، کار با rich-text و تبادل داده ها با سرور و غیره رو فراهم می کنه.

برای کار با کتابخانه حتما مستندات اون رو مطالعه کنید.

Closure Templates

ابزار یا فریم ورکی هست که امکان تولید کد های html دینامیک رو فراهم می کنه. این ابزار هم برای Java و هم برای Javascript پیاده سازی شده است. در صورتی که به صورد دینامیک با جاوا اسکریپت ظاهر صحات رو تغییر می دید این قالب ها کار شما رو سریع تر خواهند کرد.

 

بررسی وجود پیاده سازی محتویات MasterPage

۱۳۸۸/۰۸/۰۴ ۱:۴۷ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۸/۰۴ دسته بندی : ، ، ، ، 2

شاید در استفاده از MasterPage ها زمانی پیش آمده باشد که لازم شده وجود پیاده سازی یک ContentPlaceHolder را در صفحه خاص رو بررسی کنید. مثلا زمانی رو در نظر بگیرید که در صفحه خاصی نباید بلوک خلاصه محتویات صفحه یا لینکها نمایش داده شود و این کادر نیز در MasterPage پیاده سازی شده است.

پس روشی باید به کار گیرید که آن کادر در آن صفحه به خصوص نمایش داده نشود. متاسفانه در دات نت روشی برای این کار در نظر گرفته نشده است؛ لااقل هیچ متد عمومی برای این کار وجود ندارد.

خوشبختانه ویژگی داخلی و مخفی در کلاس MasterPage وجود دارد به نام ContentTemplates که لیستی از ContentPlaceHolder هست که توسط صفحه جاری پیاده سازی شده است. کاری که لازم است استفاده از قدرت Reflection دات نت هست تا به آن ویژگی دسترسی پیدا کنیم.

همراه با این باید ContentPlaceHolder برای وجود کنترل در داخلی خودش هم بررسی بشه. تابع زیر برای همین کار هست:
public static bool HasNonEmptyControls(ContentPlaceHolder cph)
{
if (cph.Controls.Count == 0)
{
return false;
}
else if (cph.Controls.Count == 1)
{
LiteralControl c = cph.Controls[0] as LiteralControl;

if (string.IsNullOrEmpty(c.Text) || IsWhiteSpace(c.Text))
return false;
}

return true;
}

static bool IsWhiteSpace(string s)
{
for (int i = 0; i < s.Length; i++)
if (!char.IsWhiteSpace(s[i]))
return false;

return true;
}

در ادامه تابع اصلی منظور ما که وجود پیاده سازی از یک ContentPlaceHolder به خصوص رو بررسی خواهد کرد:
static readonly Type _masterType = typeof(MasterPage);
static readonly PropertyInfo _contentTemplatesProp = _masterType.GetProperty("ContentTemplates", BindingFlags.GetProperty | BindingFlags.NonPublic | BindingFlags.Instance);

public static bool HasContentPageContent(ContentPlaceHolder cph)
{
IDictionary templates = null;
MasterPage master = cph.Page.Master;

while (templates == null && master != null)
{
templates = (IDictionary)_contentTemplatesProp.GetValue(master, null);
master = master.Master;
}

if (templates == null)
return false;

bool isSpecified = false;

foreach (string key in templates.Keys)
{
if (key == cph.ID)
{
isSpecified = true;

break;
}
}

return isSpecified;
}

همانطور که از کد مشخصه با بدست آوردن ویژگی ContentTemplates که یک لسیت دیکشنری است وجود ContentPlaceHolder مورد نظر رو بررسی می کنیم.

و سر انجام ترکیبی از این دو تابع جهت بدست آوردن نتیجه مطلوب:
public static bool HasContentOrControls(ContentPlaceHolder cph)
{
return HasNonEmptyControls(cph) || HasContentPageContent(cph);
}

و تمام. به راحتی می توانید از این تابع استفاده کنید. مانند نمونه زیر:
<%if (HasContentOrControls(plhOptions)){ %>
<div id="options">
<div>
<h2>
<asp:ContentPlaceHolder ID="plhOptionsTitle" runat="server" />
</h2>
<asp:ContentPlaceHolder ID="plhOptions" runat="server" />
</div>
</div>
<%}%>

همانطور که در این مثال مشاهده می کنید، فقط در صورتی که plhOptions در صفحه پیاده سازی شده باشد کادر مربوط به آن همراه با محتویات بخش plhOptionsTitle نمایش داده خواهند شد.

منبع

خوش باشید.

 

رفع باگ موجود در CookieContainer

۱۳۸۸/۰۷/۲۴ ۲۳:۵۱ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۷/۲۴ دسته بندی : ، ، 0

قبلا نوشته بودم که ماکروسافت قراره باگی رو که در کلاس CookieContainer هست رو رفع کنه، که اون باگ باعث 7 ماه سرگردانی من شده است. خبر خوبی بود، اما اگر به سایت ماکروسافت که لینکش رو گذاشته بودم مراجعه کنید می بینید که هیچ وصله ای قرار نیست برای دات نت 2 منتشر بشه. و این یعنی اینکه همچنان با مشکل باید دست و پنجه نرم کنیم!

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

  • مقدمه ای در مورد Domain در کوکی ها


تمام مشکل حول محور نحوه مدیریت domain در کلاس Cookiecontainer بر میگرده. پس میخوام مختصر توضیحی در مورد دامین در کوکی ها بدم.

در مبحث کار با کوکی ها با تنظیم مقدار domain می توانید تعیین کنید که کوکی برای کدام دامنه یا زیر دامنه ها قابل دسترسی باشد.

یک مثال ساده مانند زیر هست؛ در این مثال  کوکی با نام Hello رو برای دامین site.org ثبت می کنیم:

Hello=cookieValue value; domain=site.org; path=/

توجه کنید که این کوکی فقط به دامین site.org ثبت شده و فقط برای آن قابل مشاهده خواهد بود. هیچ زیر دامنه ای مانند www.site.org نمی تواند این کوکی رو مشاهده کند. برای اینکه کوکی به زیر دامنه های سایت site.org هم قابل دسترسی باشه باید یک نقطه (.) به اول دامنه اضافه کنیم. مانند این نمونه:

Hello=cookieValue value; domain=.site.org; path=/

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

همچنین توجه کنید که این قانون به کوکی های خود زیر دامنه ها هم اعمال میشه. برای مثال کوکی زیر فقط برای sub.site.org قابل مشاهده خواهد بود:

Hello=cookieValue value; domain=sub.site.org; path=/

و کوکی زیر، هم برای دامنه اصلی و هم برای تمامی زیر دامنه های آن قابل مشاهده خواهد بود:

Hello=cookieValue value; domain=.sub.site.org; path=/

  • بررسی مشکل


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

احتمالا تا حالا متوجه شدید که مشکل کلاس CookieContainer در نحوه مدیریت نقطه (.) هایی هست که در ابتدای دامین قرار می گیره و به شیوه اعمال اونها تاثیر میذاره.

برای نمونه مشکل زمانی اتفاق می افته که یک کوکی رو به آدرس site.org ثبت کنید و درخواست خودتون رو آدرس www.site.org ارسال کنید.
طبق مقدمه انتظار میره که هیچ کوکی ارسال نشه ولی برخلاف انتطار کوکی مزبور ارسال خواهد شد. متن کوکی این مثال:

Hello=CookieValue value; domain=site.org; path=/

همچینین مشکل دیگر و البته بدتر زمانی هست که کوکی رو به آدرس www.site.org ثبت کنید و درخواست خودتون رو به آدرس www.site.org ارسال کنید. انتظار می ره که کوکی به سلامتی ارسال بشه ولی در کمال ناباوری هیچ کوکی ارسال نخواهد شد. متن کوکی این مثال:

Hello=CookieValue value; domain=www.site.org; path=/

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

  • نحوه رفع باگ


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

  • Add(Uri,Cookie) این تابع کوکی را اضافه کرده و به مسیر تعیین شده ارتباط میدهد

  • Add(Cookie) این تابع کوکی رو اضافه کرده و دامینهای قابل اعمال رو از دامین کوکی تعیین می کنه

  • SetCookies(CookieHeader) این تابع کوکی که به صورت هدر کوکی ارسال شده رو تولید کرده و اضافه می کنه.


راه حل قطعی که تا کنون با همکاری دوستم تونستیم پیدا کنیم تغییر کلید های دسترسی به کوکی و اضافه کردن کلید های مفقود شده به صورت دستی با استفاده از امکانات Reflection دات نت.

به صورت خلاصه تابع زیر برای رفع این نقیصه نوشته شده. این تابع رو همراه با یک سری تمهیدات باید به کار ببرد که در ادامه توضیح خواهد داد:
private static Type _cookieContainerType = Type.GetType("System.Net.CookieContainer, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
private static Type _pathListType = Type.GetType("System.Net.PathList, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
///<summary>
/// This method is aimed to fix a goddamn CookieContainer issue,
/// It adds missed path for cookies which are not started with dot.
/// This is a dirty hack
///</summary>
///<remarks>
/// This method is only for .NET 2.0 which is used by .NET 3.0 and 3.5 too.
/// The issue will be fixed in .NET 4, I hope!
///</remarks>
/// Many thanks to CallMeLaNN "dot-net-expertise.blogspot.com" to complete this method
private void BugFix_AddDotCookieDomain(CookieContainer cookieContainer)
{
Hashtable table = (Hashtable)_cookieContainerType.InvokeMember("m_domainTable",
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance,
null,
cookieContainer,
new object[] { });

ArrayList keys = new ArrayList(table.Keys);

object pathList1;
object pathList2;

SortedList sortedList1;
SortedList sortedList2;
ArrayList pathKeys;

CookieCollection cookieColl1;
CookieCollection cookieColl2;

foreach (string key in keys)
{
if (key[0] == '.')
{
string nonDotKey = key.Remove(0, 1);
// Dont simply code like this:
// table[nonDotKey] = table[key];
// instead code like below:

// This codes will copy all cookies in dot domain key into nondot domain key.

pathList1 = table[key];
pathList2 = table[nonDotKey];
if (pathList2 == null)
{
pathList2 = Activator.CreateInstance(_pathListType); // Same as PathList pathList = new PathList();
lock (cookieContainer)
{
table[nonDotKey] = pathList2;
}
}

// merge the PathList, take cookies from table[keyObj] copy into table[nonDotKey]
sortedList1 = (SortedList)_pathListType.InvokeMember("m_list", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, pathList1, new object[] { });
sortedList2 = (SortedList)_pathListType.InvokeMember("m_list", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, pathList2, new object[] { });

pathKeys = new ArrayList(sortedList1.Keys);

foreach (string pathKey in pathKeys)
{

cookieColl1 = (CookieCollection)sortedList1[pathKey];
cookieColl2 = (CookieCollection)sortedList2[pathKey];
if (cookieColl2 == null)
{
cookieColl2 = new CookieCollection();
sortedList2[pathKey] = cookieColl2;
}

foreach (Cookie c in cookieColl1)
{
lock (cookieColl2)
{
cookieColl2.Add(c);
}
}
}
}
}
}

جزئیات نحوه کار این متد زیاد مهم نخواهد بود پس از ذکر آنها خودداری می کنم.

شیوه به کار گیری:

نکته خیلی خیلی مهم این هست که از هیچ کدام از توابع Add(Uri,Cookie)  و SetCookies(CookieHeader) نباید استفاده کنید. مشکلاتی این دو تابع ایجاد می کنند غیر قابل اصلاح است.

تنها تابع مجاز برای استفاده Add(Cookie) جها اضافه کردن کوکی های به کلاس CookieContainer است.

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

این تابع تمام مشکلات ذکر شده در بالا را رفع خواهد کرد.

نکته پایانی

تنها موردی که باقی ماند که نیاز اساسی به یه راه حل داره تابع SetCookies هست. چون این تابع با هدر ها کار می کنه ممکنه که به اون نیاز پیدا کنید. متاسفانه همونطور که گفتم مشکل مربوط به SetCookies هنوز رفع نشده و من و دوستم به دنبال راه حلی برای این مورد هستیم.

  • لینکهای مرتبط


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

وصله ماکروسافت برای رفع مشکل 7 ماهه من

پاسخ ماکروسافت به این مشکل

 

FeedDemon V3

۱۳۸۸/۰۷/۱۵ ۲۲:۵۶ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۷/۱۵ دسته بندی : ، ، ، 1

Feed Demon

FeedDemon ابزاری جهت خواندن و مدیریت فید یا خوراک ها هست. نسخه جدید این نرم افزار مدتی هست که منتشر شده. این نسخه نسبت به نسخه قبلی پیشرفت های قابل ملاحظه ای پیدا کرده. ویژگی قابل توجه این نسخه امکان هماهنگ کردن نرم افزار با سرویس Google Reader هست. یعنی می تونید به حساب خودتون از طریق این نرم افزار دسترسی پیدا کنید، بدون نیاز به یازکردن مرورگر و رفتن به صفخه google reader و از خواندن فید ها لذت ببرید. در مقابل حجم و سربار کمی که داره امکانات قابل توجهی رو ارائه می کنه.

Feed Demon

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

  • به اشتراک گذاری فیدها، در این نسخه بهبود زیادی کرده.

  • نمایش مسیر اصلی آدرسهای کوتاه شده با TinyUrl

  • برچسب گذاری لینک ها و فیدها

  • Watch ها که امکان جمع آوری مطالبی مرتبط با کلمات کلیدی تعیین شده رو فراهم می کنه. در این نسخه بهبود زیادی کرده.

  • جستجو: امکان جستجو در میاد فیدها با گزینه های فراوان

  • پادکست: امکان دانلود خودکار پادکستها و انتقال آنها به وسایل قابل حملتان

به نظر من این ابزار بسیار کارایی برایتان برای خواندن فیدها خواهد بود، حتی بهتر از بقیه ، پس حتما اون رو امتحان کنید.

دریافت FeedDemon

وبسایت

فید چیست؟

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

 

رفع غلط های املایی سایت با Firefox

۱۳۸۸/۰۶/۲۰ ۴:۰۱ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۶/۲۰ دسته بندی : ، ، ، 0

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

در این روشی که معرفی می کنم هیچ کاری لازم نیست انجام بدید فقط کد زیر رو در نوار آدرس سایتتون وارد کنید. توجه کنید که مرورگر باید Firefox باشه (روی opera 10 امتحان کردم و جواب داد):

javascript:document.body.contentEditable='true'; document.designMode='on'; void 0


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

Firefox Spell Checking Website

در حقیقت این کد تمام صفحه رو در حالت ویرایش قرار میده، در این صورت هست که فایرفاکس و مرورگر های جدید اقدام به یافتم غلط های املایی می کنند.

نکته: برای اینکه این غلط یابی برای فارسی درست کار کنه باید دیکشنری فارسی فایرفاکس رو نصب کنید. اینجا.

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

 

بدست آوردن سطح دسترسی Administrator در ویندوز

۱۳۸۸/۰۶/۱۶ ۰:۵۶ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۶/۱۶ دسته بندی : ، 2

VistaUAC

از ویندوز ویستا به بعد و همچنین در ویندوز 7 مدیریت UAC قوانین سخت گیرانه ای رو برای سطح دسترسی کاربر و برنامه های کاربر به منابع سیسیتم و سیستم عامل در نظر گرفته است. این قوانین شامل اجرای تمامی برنامه ها در سطح دسترسی کاربر معمولی است و به همه آنها اعمال می شود. یعنی اگر کاربر فعلی دسترسی administrator داشته باشد باز هم برنامه های اجرا شد توسط آن با سطح user معمولی اجرا خواهد شد.

این سیاست که البته مدتهاست لینوکس از آن استفاده می کنه سبب خواهد شد بدافزارها نتوانند به راحتی به سیستم دسترسی داشته باشند. همچنین کنترل دسترسی نرم افزارها به منابع سیستم راحتتر خواهد بود.

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

به هر حال شرایطی را در نظر بگیرید که به هر حال دسترسی به این منابع مورد نیاز باشد. در این صورت چند راه حل برای دستیابی به مجوز administrator وجود دارد.

راه حل اول- اولین و ساده ترین راه این است که از کاربر بخواهید با راست کلیک کردن بر روی برنامه شما و انتخاب Run as Administrator به برنامه این سطح دسترسی را بدهد. این راه حل مناسب و کاربر پسندی نخواهد بود.

راه حل دوم- در صورتی که از Visual Studio استفاده می کنید، دومین راه حل همراه با نسخه 2008 آن عرضه شده. این مورد بر این اساس هست که برنامه ها در صورتی که از یک manifest خاص استفاده کنند، ویندوز تشخیص خواهد داد که آن برنامه نیاز به مجوز admin دارد و این مورد توسط درخواستی از کاربر اعلام خواهد شد.

به این منظور نیاز به یک Application Manifest خواهد بود. برای افزودن آن به پروژه روی نام پروژه کلیک راست کرده و Add -> New Item رو انتخاب کنید. از این پنجره آیتم Application Manifest File رو انتخاب کنید. فایلی با نام app.manifest به پروژه اضافه خواهد شد. محتویات این فایل مانند زیر است:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>

تنها قسمت مهم برای ما requestedExecutionLevel هست که درخواست مجوز مورد نیاز رو مشخص می کنه. در ادامه آن، مقدار level نشان دهنده مجوز درخواستی است. این مقدار شامل موارد زیر است:

asInvoker: حالت پیش فرض سیستم که همان کاربر معمولی خواهد بود.

requireAdministrator: درخواست مجوز admin را مطرح می کنه. این درخواست باید برآورده بشه و برنامه حتما باید با این مجوز اجرا بشه در غیر اینصورت و درصورت عدم پذیرش کاربر برنامه اجرا نخواهد شد.

highestAvailable: درخواست بالاترین مجوز قابل دسترسی را مطرح می کند. دقت کنید که تفاوت این گزینه با requireAdministrator در این است که در صورتیکه امکان اجرای برنامه با دسترسی های پایین تری مانند PowerUser وجود باشد این انتخاب به کاربر واگذار خواهد شد. همچنین ممکن است که در این گزینه فقط کلمه عبور برای دسترسی های کمی بالاتر درخواست شود.

پس یکی از موارد requireAdministrator یا highestAvailable را با توجه به نیاز خود انتحاب کنید و فایل مذکور رو تغییر بدید. همچنین در بخش assemblyIdentity اطلاعات برنامه شما قرار دارد که تغییر آن اختیاری است.

در نهایت فایل app.manifest به این صورت خواهد بود:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="SalarBlog.AdministratorElevate.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>

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

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

ابتدا لازم است تا سطح دسترسی کاربر فعلی را بررسی کنیم:
public static bool AdministratorIsInRole()
{
return new WindowsPrincipal(WindowsIdentity.GetCurrent())
.IsInRole(WindowsBuiltInRole.Administrator);
}

در این تابع موجز دسترسی Administrator بررسی شده است. سپس با استفاده از تابع ShellExecute ویندوز و پارامترهای آن درخواست اجرا را مشخص می کنیم:
public static void Elevate()
{
ShellExecute(IntPtr.Zero, "runas",
Application.ExecutablePath + "", "", "", 1);
}

[DllImport("shell32.dll")]
private static extern void ShellExecute(IntPtr intPtr, string p, string p3, string p4, string p5, int p6);

و سرانجام کافی هست تا اینها را یکجا و در کد برنامه قرار دهید. برنامه نهایی مانند زیر خواهد بود:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Security.Principal;
using System.Runtime.InteropServices;

namespace AdminElvate
{
static class Program
{

[STAThread]
static void Main()
{
if (!AdministratorIsInRole())
{
Elevate();
return;
}

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}

static bool AdministratorIsInRole()
{
return new WindowsPrincipal(WindowsIdentity.GetCurrent())
.IsInRole(WindowsBuiltInRole.Administrator);
}
static void Elevate()
{
ShellExecute(IntPtr.Zero, "runas",
Application.ExecutablePath + "", "", "", 1);
}

[DllImport("shell32.dll")]
private static extern void ShellExecute(IntPtr intPtr, string p, string p3, string p4, string p5, int p6);

}
}

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

 

CKEditor 3.0

۱۳۸۸/۰۶/۰۳ ۳:۲۴ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۶/۰۳ دسته بندی : ، ، 3

CKEditor

نسخه جدید ویرایشگر آنلاین FCKeditor عرضه شد. این ویرایشگر اخیرا به CKEditor تغییر نام پیدا کرده و از این به بعد به این نام عرضه خواهد شد. این تغییر نام با توجه به یک نظر سنجی و نظرات کاربران در مورد مشکل داشتن نام این ابزار بوده!

در این نسخه که تغییرات بسیار زیادی صورت گرفته که می شه گفت اگر از نسخه های FCKEditor استفاده می کردید باید اونها رو کنار بذارید. سرعت بارگذاری این ویرایشگر بهبود قابل ملاحظه کرده. قابلیت تغییر رنگ و پوسته بهتر و پشتیبانی بهتر از زبانهای راست به چپ نیز از سایر امکانات این ویرایشگر هست. API کاربردی این ابزار تغییرات بسیاری کرده که لازمه حتما به مستندات اون مراجعه کنید.

دریافت CKEditor 3.0

 

ویروس در برنامه های دلفی 4 تا 7

۱۳۸۸/۰۵/۳۰ ۲۲:۳۰ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۵/۳۰ دسته بندی : ، ، 1

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

این ویروس که در روسیه کشف شده ابتدا وجود نسخه ای از دلفی رو در سیستم جستجو کرده و بعد فایل SysConst.dcu را با استفاده از کامپایل مجدد نسخه آلوده، جایگزین می کنه. این یونیت که در تمام برنامه های دلفی اضافه می شه ، در صورت آلوده بودن سبب انتشار ویروس توسط برنامه شما خواهد شد.

این ویروس خطرناک نیست و کار خاصی به غیر از انتشار خودش انجام نمی ده. اسم این ویروس W32/Induc-A هست و اطلاعات اون رو اینجا میتونید مشاهده کنید.

بهتره که ویروس کش ها تون رو به روز کنید و پس از حذف ویروس، می تونید فایلی با نام SysConst.bak رو که ویروس از روی فایل اصلی ساخته برگردونید. در این صورت احتمالا مشکل شما حل خواهد شد.

همچنین بخوانید:
A Tempest in a Teapot or something more sinister
Delphi developer virus exposes weakness in anti-virus defences
More on the Delphi Virus Alert

 

چرخش متون و اشیای صفحه با CSS 3

۱۳۸۸/۰۵/۲۰ ۳:۱۰ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۵/۲۰ دسته بندی : ، 0

یکی دیگر از ویژگیهایی که به CSS 3 اضافه شده امکان چرخش دادن به اشیا و متون در جهت دلخواه است.
این چرخش با ویژگی جدیدی با نام transform معرفی شده. هنوز این ویژگی نهایی نشده و ممکنه که در آینده تغییراتی در اون به وجود بیاد و زاویه های دیگری غیر از درجه رو هم پشتیبانی کنه، اما فعلا با این تعریف کنونی مرورگرهای Firefox 3.5 ، Chrome و Safari از اون پشتیبانی می کنند.
این ویژگی قدرت عمل زیادی به طراحان وب خواهد داد و با استفاده ترکیبی ازاین ویژگی می توان انیمیشن های مختلفی برای سایت ایجاد کرد.
دستور این ویژگی به این صورت است:
transform: rotate;
که مقدار rotate یا چرخش به صورت rotate(Xdeg) وارد میشه. مانند این نمونه:
transform: rotate(-90deg);
  • به کار گیری
همانطور که گفتن این ویژگی در Firefox 3.5 ، Chrome و Safari پستیبانی میشه. کاری شبیه این رو می شه با استفاده از فیلترهای مخصوص IE در آن مرورگر انجام داد.

برای استفاده در Firefox طبق معمول باید پسوند -moz رو به ویژگی اضافه کنید، برای مرورگر Chrome و safari نیز -webkit لازم خواهد بود. مانند زیر:
-webkit-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);

برای مرورگر IE هم از فیلترها برای شبیه سازی عملکردی مانند این استفاده کنید:
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  • نمونه های انجام شده
ساعت با جاوا اسکریپت و این ویژگی
نمایش تاریخ میلای در کنار متون
تاریخ میلادی به سبک دیگر (منبع این پست)
نمایش دهنده گالری عکس با ترکیبی از JQuery و این ویژگی(safari)
  • مطالب مرتبط
ویژگیهای جدید در CSS 3 بخش اول
ویژگیهای جدید در CSS 3 بخش دوم
راهنمای سریع و مرجع کامل Html و CSS
افزونه فایرفاکس: تشخیص تغییرات DOM و CSS در صفحات وب

 

اخبار توسعه دهندگان

۱۳۸۸/۰۵/۱۵ ۲:۵۸ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۵/۱۵ دسته بندی : ، 0

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

برنامه نویسی وب

آنالیز عمق کدهای به کار رفته در صفحه

راهنمای عملی استفاده از HTML5 و CSS3

مرجع سریع CSS3

دلفی

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

امکانات جدید RAD Studio 2010 و  اینجا

در RAD 2010 نوار ابزار قدیمی را دوباره داشته باشید

حذف نام CodeGear و انتقال به Embarcadero

C#



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

مرورگرهای وب

اشکال زدای مخصوص V8 با Chrome و  پروتوکل آن

بتای جدید Chrome و پشتیبانی از پوسته ها

گالری پوسته های Chrome راه اندازی می شود

Open Source

گوگل شرکت On2 را می خرد و اینجا (On2 تولید کننده کدکهای ویدوئی با مشتریان بزرگی چون Adobe و Nokia هست)

آموزشی

مروري بر ويژگي هاي نسخه 5.0.1 بانك اطلاعاتي MySQL

 

وصله ماکروسافت برای رفع مشکل 7 ماهه من

۱۳۸۸/۰۵/۱۰ ۳:۲۷ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۵/۱۰ دسته بندی : ، ، ، ، 1

یک هفته پیش متوجه منشا و علت اصلی اشکالی شدم که نزدیک به 7 ماه بود من رو مشغول به خود کرده بود و نمی توانستم دلیل اصلی اون رو پیدا کنم.
مشکل مروبط به عملکرد کلاس CookieContainer هست که اشکال داره و در شرایط خیلی خاص دچار مشکل کوچکی می شه که باعث اشکالات عجیبی برای یکی از پروژه هام شده.
به هر حال بعد از گزارش دیروز من به ماکروسافت امروز خبر دار شدم که مشکل رو حل کردن و قراره در dotNET 4 قرار داده بشه.
برام خیلی خوشحال کننده است که تونستند در یک روز مشکل رو حل کنند. اما چه فایده که همچنان مشکل فعلی باقی خواهد ماند.
مشکل مربوطه رو اینجا بخونید:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=478521

اینجا هم گذاشته بودم:
http://stackoverflow.com/questions/1047669/cookiecontainer-bug

 

dotNET Framework 4.0 Beta 2

۱۳۸۸/۰۵/۰۸ ۲۱:۴۴ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۵/۰۸ دسته بندی : ، 0

dotNet Framework

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

ویژگیهای که فعلا اعلام شده مربوط به امکانات شبکه و کلاسهای کار با آن است. به طور خلاصه:

بهتر شدن امکان کار با socket ها شامل راحتی کار با DNS و امکان استفاده همزمان از IPv4 و IPv6.

تنظمیات بیشتر برای کار با SSL درخواستهای WebRequest و SmtpClient همچنین SslStream .

افزوده شدن امکانات به کلاس HttpWebRequest شامل پشتیبانی با طول بیشتر هدر range ، پشتیبانی از هدر های Host و Date. همراه با افزوده شدن تعدادی شمارشگر کارایی (Performance counter) به کلاس پایه WebRequest.

پشتیبانی از کاراکترهای کد شده در هنگام کار با Uri ها.

به عنوان یک نظر شخصی چیزی که dotNET 4 هنوز من رو ناراحت می کنه یکپارچه نشدن Web Extension های ماکروسافت با Web.config هست. به طوری که برای استفاده از Ajax.Net که یک نمونه پرکاربرد هست نیاز به تعریف چندین section در فایل web.config هست که این باعث شلوغی بی مورد این فایل میشه.

توضیحات بیشتر رو از منابع بخونید:

What Will Be New in Networking for Beta 2

New NCL Features in .NET 4.0 Beta 2

.NET Framework 4.0 Beta 2: New Networking Features Coming up

نسخه دوم Beta 1 منتشر شده است(!) همراه با STM.NET (یعنی software transactional memory) از dotNET Framework منتشر شده که از آزمایشگاه ماکروسافت می تونید دریافت کنید.

 

بررسی کامل Google Webmaster Tools

۱۳۸۸/۰۴/۳۱ ۲۱:۳۶ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۴/۳۱ دسته بندی : ، ، ، ، ، 12

Google Webmaster Tools
Webmaster Tools یکی از سرویس های ویژه مدیران سایتها است که با هدف افزایش کیفیت سایتها با توجه به معیارهایی شرکت گوگل است. این کار برای افزایش کیفیت نتیایج مرتبط با عبارات جستجو طراحی شده است. این سرویس مدت چندین سال است که راه اندازی شده و اخیرا بازبینی بر روی برخی امکانات و ظاهر آن صورت گرفته است.

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

  • بررسی ویژگی و مزایا


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

بخش Dashboard

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

در منوی سمت چپ لیستی منویی می بینید که از طریق آن را سایر قسمت های این سرویس می توانید دست پیدا کنید.

مدیریت Sitemap

Sitemap یا به فارسی نقشه سایت، به صورت تعدادی استاندارد عرضه شده که اکثر آنها را گوگل در این سرویس پشتیبانی می کنه. همچنین گوگل این امکان رو میده که نقشه سایت رو به صورت Feed یا "خوراک" ثبت کنید.

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

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

مدیریت دسترسی به قسمتهای سایت (Crawler access)

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

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

همچنین در این بخش می توان به تولید فایل robots.txt پرداخت و آن را در موتور های جستجوی مختلف گوگل مورد آزمایش قرار داد.

مدیریت SiteLinks

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

Sitelinks

در این قسمت می توانید لینکهایی که در Sitelinks داده شده را ویرایش کنید.

تنظیمات کلی سایت (Settings)


این تنظیمات در داخل بخش Site configuration با نام Settings قرار دارند. کارهای می توانید انجام بدهید به شرح زیر است.

Site Settings

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

همچنین می توانید به گوگل بگویید که آدرس سایت شما را با www نمایش بدهد یا نه و یا اینکه با توجه به لینک ها این کار را انجام دهد. این گزینه با نام Preferred domain مشخص شده است.

و سرانجام تنظیم تعداد دفعات مراجعه موتور کاوشگر گوگل به سایت در قسمت Crawl rate قابل تنظیم است. ممکن است که به علت بزرگ بودن سایت و مشکلات سرور نتوان پاسخ گوی درخواستهای اضافی بود که در این صورت این مقدار باید کم شود. در صورتی هم که از عدم شناسایی به موقع تغییرات سایت ناراضی هستید مقدار آن را افزایش دهید.

توجه کنید که این گزینه بر ترافیک سایت و همچنین به روز بودن لینکها تاثیر زیادی دارد و در تغییر این مقادیر دقت کند.

بهترین کلمات کلیدی - Top search queries
در این قسمت کلمات کلیدی که در موتور جستجو بیشترین مراجعه را به سایت شما کرده است نمایش داده می شود. همچنین موقعیت شما در نتایج جستجو با استفاده از کلمات کلیدی که در سایت استفاده کرده اید نمایش داده می شود.

این لیست خیلی مهم است و با استفاده از آن می توان فهمید که کاربران به چه چیزهایی علاقه دارند. همچنین چه کلمات کلیدی شانس بیشتری برای کلیک دارند. با استفاده از این کلمات می توانید سایت خود را بهینه تر کنید.

Top search queries

لینک ها به سایت - Links to your site
در این صفحاتی که لینکهایی از سایت های دیگر به آن داده شده است لیست می شوند. همچنین می توان متن لینکی که برای لینک دادن استفاده شده است را مشاهده کرد.

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

کلمات کلیدی - Keywords

در این صفحه لیست پر کاربردترین کلمات کلیدی قرار دارد. برای درک ساختار مطالب صفحات شما برای تنظیم مقادیر Keyword مناسب است.

برای فارسی این مشکل وجود دارد که حروف اضافه مانند "در" در بالاترین مکان قرار می گیرند.

لینک های داخلی - Internal Links

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

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

مشترکین خوراک - Subscriber stats

در صورتی که سایت شما Feed یا خوراک ارائه میده در این صفحه می تونید وضعیت مشتریک خود را در سرویس Google Reader مشاهده کنید. در صورتی که این feed ها را قبلا در قسمت sitemap ثبت نکرده باشید می توانید آنها را مستقیما از اینجا به لیست Sitemap ها اضافه کنید.

خطاهای موتور کاوشکر - Crawl errors

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

این خطاها در سه گروه عمده Web و Mobile-Chtml و Mobile-Xhtml تقسیم بندی شده که نشان دهنده وجود سه موتور کاوشگر متفاوت برای این نوع صفحات است.

به غیر از Web بقیه موارد زمانی نشان داده می شود که سایت سرویس هایی برای موبایل ارائه کند.

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

Crawl Errors

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

در این لیست تنها موردی که ممکن شما را به اشتباه بیاندازد و باید به آن توجه کنید قسمت "Restricted by robots.txt" است. صفحات لیست شده در این قسمت دارای اشکال نیستند و فقط توسط robots.txt که قبلا گفته شد، از لیست نتایج حذف شده اند و در نتیجه موتور کاوشکر آنها را کاوش نکرده است. این لیست کمک خواهد کرد که بدانید دقیقا کدام صفحات از نتایج جستجو حذف شده اند.

گزارش موتور کاوشگر - Crawl stats
این گزارش عملکرد موتور کاوشگر بر روی سایت است که شامل میانگین مدت زمان صرف شده برای دریافت صفحات و تعداد روزانه صفحات بازدید شده و همچنین حجم باند مصرفی است.

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

Crawl Stats

همچنین در زیر این آمار خلاصه وضعیت سایت از نظر Page Rank نمایش داده شده است. یعنی در حالت کلی سایت بیشتر در بالای نتایج نمایش داده می شود یا نه.

در ادامه صفحه ای که در هر ماه دارای بیشترین Page Rank بوده نیز نمایش داده می شود.

پیشنهادات بهینه سازی - HTML suggestions

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

برای نمونه در صورتی که دو صفحه از یک عنوان استفاده کنند، این مورد در قسمت Duplicate title tags با عنوان وجود یک مشکل نمایش داده خواهد و با ورود به جزئیات امکان مشاهده صفحاتی که دارای اشکال هستند نمایش داده خواهد شد.

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

  • نحوه ثبت سایت در این سرویس


پس از اینکه وارد صفحه Webmaster Tools شدید بر روی گزینه Add site کلیک کرده و آدرس سایت رو وارد کنید. پس از آن آدرس سایت نمایش داده خواهد شد که نیاز به تایید دارد. برای تایید سایت بر روی گزینه Verify this site کلیک کنید:

افزودن سایت به Webmaster Tools

تایید هویت سایت را به دو صورت می توانید انجام دهید. اول اینکه یک تکه کد Html را به صفحه اصلی سایت اضافه کنید و راه دوم اینکه یک فایل با نام مشخص در مسیر اصلی سایت قرار دهید.

در صورتی که به ساختار صفحات html آشنایی ندارید بهتر است که از روش دوم و قرار دادم فایل در مسیر اصلی سایت استفاده کنید. این فایل یک فایل خالی خواهد بود که نام آن را با انتخاب گزینه HTML file در قسمت Verification method به شما نمایش خواهد داد. این نام معمولا فرمتی مانند googlee30bf8a27611ecb4.html دارد.

تایید سایت

پس از تایید سایت امکانات این سرویس فعال خواهند شد.

نکته ای برای وبلاگها: سرویس های وبلاگ در صورتی می توانند از این سرویس گوگل استفاده کنند که اجازه ویرایش صفحه Html وبلاگ را داشته باشند. به این علت که برای تایید سایت نیاز به افزودن کدی به صفحه است. خوشبختانه بیشتر سرویس ها شامل blogfa، mihanblog ، blogspot و غیره این امکان را می دهند. توجه کنید که این امکان در سرویس wordpress.com وجود ندارد.

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

موفق باشید.

 

Firebug 1.4

۱۳۸۸/۰۴/۲۵ ۴:۲۸ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۴/۲۵ دسته بندی : ، ، 0

Firebug

امروز فایرباگ نسخه 1.4 نهایی منتشر شد. از این نسخه 11 بتا منتشر شده بود.

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

بخش Net هم اطلاعات مختلف را در قالب های مناسبتری نمایش می دهد. همچنین سعی شده با افزودن کلیدهای میانبر کاربری این افزونه قدرتمند هرچی سریعتر شود.

لیست کلیه تغییرات را در اینجا مطالعه کنید. (برای ایران مسدود است)

دریافت از صفحه Addons

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

نکته: برای استفاده از این نسخه باید حتما از فایرفاکس 3 به بالا استفاده کنید.

 

دو ابزار قدرتمند برای تهیه عبارات با قاعده (Regex)

۱۳۸۸/۰۴/۱۵ ۱۹:۵۴ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۴/۱۵ دسته بندی : ، ، 3

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

عبارات با قاعده (Regular expressions) ابزار بسیار قدرتمندی در پردازش متون فرمت دار هستند.
از آنجایی که برخی عبارات می توانند بسیار پیچیده باشند وجود ابزاری برای ساده کردن کار بسیار لازم به نظر می رسه.
عبارات قاعده می توانند خیلی ساده مانند \w+ برای انتخاب کلمات باشند و یا خیلی پیچیده مانند (?><[A-Z][A-Z0-9]+)(?>\s+[^>\s]+)*?\s*(?>background\s*=(?!\\)\s*)(?>(['"])?)(?(?(1)(?(?<=")[^"]+|[^']+)|[^ >]+))(?(1)\1|) برای انتخاب ویژگی background در تگهای Html باشند.

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

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

محیط ویرایشگر و آنالیزر


یک ویژگی مهم دیگر این نرم افزار پیاده سازی موتور پردازشگرهای زبانها مختلف برنامه نویسی است. به علت اینکه ممکن است برخی ویزگیهای regex در موتور های مختلف کمی متفاوت پیاده سازی شده باشند و یا جذف شده باشند، این ویژگی کمک خواهد کرد که کدهای نوشته شده با آن موتور همخوانی داشته باشد. تعدادی از موتور های پردازش regex  پیاده سازی شده شامل javascript, perl .NET , java, XPath و غیره است.

استفاده از موتور javascript


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

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

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

تست و اشکال زدایی

خلاصه ای از ویژگی ها این ابزار:

Regex Tree and Regex Building Blocks
Regex Tester and Debugger
Instant Code Snippets
RegexBuddy Library
Search and Replace through Files and Folders
Integration with Your Favorite Software
و Toturial


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

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

محیط Expresso

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

محیط آنالیز و ویرایش هر قسمت

همانطور که در این تصویر مشاهده می کنید امکان تست عبارات وجود دارد. این امکان که به جزئیاتی همانند گروههای هر نتیجه دسترسی پیدا کنید از طریق لیست درختی بخش Search Results قابل دسترسی است.

مورد دیگر امکان Timing Test از منوی Tools هست که این امکان را فراهم می کند تا سرعت اجرای عبارات را در اجرای مکرر بسنجید.

و سر انجام مجموعه عبارت از قبل آماده که می توانید لیست آنها را در بخش Expression Leibrary مشاهده کنید.

ویژگیهای این ابزار به صورت لیست وار:

Test expressions against real or sample input data
Display all matches in a tree structure, showing captured groups, and all captures within a group
Build replacement strings and test the match and replace functionality
Highlight matched text in the input data
Test automatically for syntax errors
Generate Visual Basic, C#, or C++ code
Dramatically enhanced Analyzer
Rich new Builder and editing features


  • این دو ابزار با هم


این دو نرم افزار همانطور که ذکر شد دارای ویژگیهایی قابل ملاحظه ای هستند. اما با این حال شاید در برخی موارد کاستی هایی داشته باشند. به همین خاطر چرا از هردوی آنها استفاده نکنیم؟ این راه کار من هست:

ابزار RegexBuddy یک عیب اذیت کننده دارد و آن محیط کد نویسی یا تولید عبارات با قاعده است. یک منو که فقط با اسامی امکان دسترسی سریع به الگوها را می دهد.

ابزار Expresso عیبی که دارد این است که بر روی تست های عبارات کنترل کافی ندارد. برای مثال در صورتی که در تستها نتیجه ای از قلم افتاده باشد مشخص نخواهد شد. همچنین قدرت اشکال زدایی و اجرای قدم به قدم عبارات را نیز ندارد.

با توجه به این معایب و وِیژگیهایی که برای هر یک ذکر کردم می توان از این دو ابزار به این صورت در کنار هم استفاده کرد.

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

در صورتی که در حال نوشتن عبارات جدید هستید از ابزار expresso و محیط Design آن استفاده کنید. همچنین از ویژگیهای آنالیزر آن هم استفاده کرده و می توانید تست های خوبی روی عبارات انجام دهید. و سرانجام برای تست نهایی و تایید صحت عملکرد و بهینه سازی از ابزار RegexBuddy استفاده کنید.

در حالت کلی برای تست سریع عباراتی که در اینترنت مشاهده می کنید و یا به ذهنتان خطور می کند به سلیقه خود یکی را انتخاب کنید.

موفق باشید

 

مرگ تدریجی

۱۳۸۸/۰۳/۲۳ ۱۲:۵۵ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۳/۲۳ دسته بندی : ، ، 5

دیشب خوابم نمی برد.
صبح با اولین خبر خشکم زد.
امیدم ناامیدیست

راه مصالحه با این قاعده بازی ها به پایان رسیده.

فقط مبارزه به هر نحو

 

دلفی MacOS و Linux را هدف قرار داده است

۱۳۸۸/۰۲/۳۱ ۱۴:۲۰ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۲/۳۱ دسته بندی : ، ، 2

کنفرانس Delphi Live در سن خوزه آمریکا به پایان رسید. آنچه که از گفته های شرکت کنندگان در وب بر می یاد، آنها ازآینده دلفی و برنامه های در نظر گرفته شده برای آن بسیار خوشحال هستند.

از جالبترین برنامه های برای دلفی در نظر گرفته شده، هدف قرار دادن سیستم های MacOS و Linux است. این یعنی تولید  کدهای کامپایل شده برای هر سیستم عامل. لازم به یادآوری هست که در سال 2002 شرکت borland (صاحب قبلی دلفی) محیط Kylix و مجموعه CLX را برای برنامه نویسی در Linux عرضه کرده بودند. البته آن سال آخرین نسخه این ابزار عرضه شد که علت آن هم ضعیف بودن آن مجموعه و اشکالات بسیار آن بود.

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

Yes, Virginia, there is a Delphi MacOSX and Linux project…

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

DelphiLive - Where is Delphi Going?
Delphi Live! 2009 #2: Roadmap

همانطور که مشخصه ویژگیهای جالب Cross-platform ، RTTI Enhancements ، 64 Bit native و Multi-Core. Multi-threaded جزو برنامه قرار دارند.

همچنین ببینید:

ویدیوهای دمو Touch و Gesture
The best of DelphiLive was [Video]
Delphi Live 2009: Touch Application with Delphi - Part I
Delphi Live 2009: Touch Application with Delphi - Part II
Delphi Live 2009: Touch Application with Delphi - Part III
Delphi Live 2009: Touch Application with Delphi - Part IV

DelphiLive! 2009 was excellent
Delphi Live 2009! #3: Final Day and Roundup

*پ.ن: به علت مشغله کاری و ذهنی که دارم احتمالا و فعلا نتونم زیاد آپدیت کنم، پیشاپیش غذر خواهی من رو بپذیرید!

پستهای مرتبط:
مروری بر Delphi 2009 و مهاجرت به آن

 

ایجاد FavIcon متحرک و تغییر آن با جاوا اسکریپت

۱۳۸۸/۰۲/۲۰ ۳:۲۱ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۲/۲۰ دسته بندی : ، ، ، 3

تاکنون سایتهایی را دیده اید که favicon متحرک دارند. اعمال این انیمشین به سادگی امکان پذیر است.

برای اطلاع از اینکه favicon چیست به اینجا مراجعه کنید.

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

favicon متحرک


برای اعمال آیکون متحرک ابتدا فایل انیمشن gif مورد خودتون رو ایجاد کنید و در مسیر سایت قرار بدید.

کد زیر رو به قسمت head فایل html مورد نظر اضافه کنید:
<link rel="shortcut icon" href="favicon.gif" type="image/gif">

نکته ای که در اینجا مهم هست استفاده همزمان از فایل gif و icon هست  تا برای مرورگرهایی که از این ویژگی پشتیانی نمی کنند مشکلی پیش نیاید و همچنان آیکون سایت نمایش داده بشود.
بس برای این منظور فایل favicon.ico را هم در مسیر قرار و لینک آن را نیز به قسمت head اضافه کنید. توجه کنید لینک icon باید قبل از gif باشد تا فایل gif در اولویت قرار گیرد.

نتیجه نهایی قسمت head صفحه به این صورت خواهد بود:
<head>
<title>SalarBlog.wordpress.com Animated Favicons</title>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="favicon.gif" type="image/gif">
</head>

نحوه تغییر favicon با جاوا اسکریپت


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

این روش فقط در مرورگرهای فایرفاکس و اپرا کار خواهد کرد و در سایر مرورگرها بی اثر هست.
تابع زیر در جاوا اسکریپت با دریافت آدرس آیکون آن را به صفحه اعمال می کند:
function ChangeFavicon(iconUrl){
var docHead=document.getElementsByTagName('head');
if(docHead!=null && docHead.length>0)
docHead=docHead[0];
else return;
var link = document.createElement("link");
link.type="image/x-icon";
link.href=iconUrl;
link.rel="shortcut icon";
docHead.appendChild(link);
}

در این تابع با ایجاد یک شی Link و مقدار دهی آن و سپس اضافه کردن آن به بخش head سایت مرورگر رو وادار به شناسایی آیکون جدید کرده و آن را نمایش می دهیم.

استفاده از این تابع آسان است و به صورت زیر خواهد بود.
ChangeFavicon('favicon-frame1.ico');
ChangeFavicon('favicon-frame2.ico');
ChangeFavicon('favicon-frame3.ico');

پ.ن: برای ایجاد favicon به صورت آنلاین از سایت favicon.cc استفاده کنید.

موفق باشید

 

افزونه های CodeGear Rad Studio برای دلفی

۱۳۸۸/۰۲/۰۹ ۲۳:۱۱ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۲/۰۹ دسته بندی : ، ، 8

در این نوشتار قصد دارم که شما رو با چند تا از افزونه های محیط توسعه دلفی یعنی CodeGear Rad Studio آشنا کنم.

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


  • CnPack IDE Wizards




ابزار رایگان و opens source است که قابلیهای خوبی را اضافه می کند از جمله تعدادی wizard . این افزونه با داشتن Code Structure Highlight که با رنگی کردن بلاک ها به تشخیص کد ها کمک می کند.

CnPack Editor Toolbar
CnPack

Structure highlighted
Structure highlighted

قابلیت کار با محیط های:

Delphi 5 6 7, C++Builder 5 6 or BDS 2005 2006, RAD Studio 2007 2009

ویژگی ها:

Code Input Helper
Code Structure Highlight and Lines
Enhanced Units/Forms List
TabOrder Wizard
Flat Toolbar in Form Designer with full customized
MSDN Help Integrated
Toolbar in Editor with full customized
Project Extension Tools
Multi-line Component Palette
Roll Windows and Set to Topmost
Source Codes Statistics
Lots of Other Improvements

افزونه های این ابزار که به آن اضافه شده اند:
CnWizards Configuration Import&Export
DFM File Convertor
IDE Config Backup/Restore Tool, including IDE History Cleaner
Debug Output Unit & Viewer
ASCII Chart
IDE External Wizard Management Tool
Source-Module Relation Analyzer

سایت سازنده

لینک دریافت


  • GExperts




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

امکانات اضافه شده به ویرایشگر کد

همچنین این افزونه یک افزونه اضافه و غیر رسمی دیگر دارد که برای فرمت کردن کد مورد استفاده قرار می گیرد. موردی که دلفی آن را کم دارد!

این افزونه اضافی که code formatter نام داره تحت بسته ای با نام Experimental GExperts Version عرضه می شه که می تونید از سایتش دریافت کنید:

دریافت Experimental GExperts Version

قبل از هر کاری باید GExprts را دریافت کرده و نصب کنید. سپس این Experimental GExperts را دریافت کنید. پس از دریافت باید فایل های موجود در پوشه EditorExpert را با فایلهای ابزار GExprts جایگزین کنید.(مشاهده کنید) پس از آن کلید ALT+F کد را برای شما مرتب خواهد کرد.

قابلیت پشتیبانی از محیط های Delphi 6, 7, 8, 2005, BDS 2006, RAD Studio 2007, 2009

سایر ویژگی ها و راهنما رو اینجا مطالعه کنید.

سایت سازنده

لینک دریافت GExprts


  • Castalia




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

از جمله قابلیت های زیر:
Editor Changes
Line Numbers
Navigation Toolbar
Structural Highlighting
Flow Control Highlighting
Live Syntax Checking
Syntax Error Balloons
Code Templates
Inline Variable Declaration
Parenthesis Matching
One Key Commenting
One Key Indentation
Modeless text search toolbar
Automated intelligent line wrap
New Editor Context Menu Items
Refactoring
New IDE Windows
Flyout Bar
Project Statistics
MultiPaste
Fix Line Breaks


Castalia In Code Editor

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

امکان تغییر نام کنترل و موارد استفاده شده از آن و عوض کردن کنترل و چند مورد دیگر برای عملیات Refactoring ویژگی ها اضافه شده به محیط ویرایشگر فرم هستند.

سایت این ابزار

DDevExtensions


این افزونه بیشتر بر روی عملیات کامپایل کد و ویژگیها IDE تمرکز داره

ویژگی های این افزونه:
Adds an improved View Units, View Forms and Use Units dialog
Adds an extended “Use Units” dialog for the Delphi personalities showing all files that the compiler can see
Keybinding for extended HOME and indent/unindent TAB/Shift-TAB
Ctrl+Left/Right like in VisualStudio
Adds a dialog to set the versioninfo for multiple projects in a projectgroup
Can disable the Source modified. Rebuild? dialog
Brings back the old component palette
Allows to disable the package cache
Adds a progressbar to the compile dialog
Adds Explicit* property remover to keep DFM files compatible to older Delphi versions
Allows to delete .ddp files, empty Model and empty __history directories.
Adds a backup system that creates backups of unsaved files when you compile or execute a project.
Adds the option to automatically save after a successful compile
Adds the ability to close the IDE even if the IDE’s termination code raised an exception
Adds the ability to kill the IDE after saving all files by using Ctrl+Close-Button
Enables Delphi 2009’s ability to cancel the Kibitz-Compiler by pressing ESC or moving the mouse

از ویژگی جالب این افزونه می توان به موارد زیر اشاره کرد:

  • ابزار Use Unit پیشرفته

  • اصلاح عملکرد کلید های Ctrl+Left/Right و Home

  • ذخیره فایلها پس از کامپایل موفق و حذف فایلهای پشتیبان زاید

  • حذف کدهای غیر ضروری تولید شده در فایل DFM


وبلاگ نویسنده

لینک دریافت

 

نگاهی اجمالی به Ubuntu 9.04

۱۳۸۸/۰۲/۰۳ ۲:۱۸ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۲/۰۳ دسته بندی : ، ، 3

نسخه جدید از Ubuntu 9.04 با نام Jaunty Jackalope به معنی خرگوش زیرک به زودی منتشر خواهد شد منتشر شده است.

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

نسخه های جدید GNOME و KDE

نسخه جدید Gnome 2.26 همراه با نسخه KDE 4.2 که پیشرفتهای گرافیکی خوبی داشته اند.

Ubuntu 9.04

Kubuntu 9.04

در این نسخه ابزار Brasero Disc Burner راه کاملی را برای رایت سی.دی و دی.وی.دی ارائه کرده.

Ext4

ارتقا قابل توجه دیگر استفاده از سیستم فایل Ext4 هست که سبب افزایش کارایی از5 تا 10 درصد می شود. این سیستم فایل جدید قابلیت پشتیبانی از پارتیشن هایی به بزرگی 1 exabyte و همچنین فایلهایی به بزرگی 16 ترابایت رو داره.8)

اطلاعات بیشتر در مورد Ext4 رو اینجا مطالعه کنید.

Boot Performance

افزایش سرعت راه اندازی یکی دیگه از مزیتهای این نسخه خواهد بود و با توجه به  تست های انجام شده بر روی نسخه بتا Ubuntu می تواند زیر 22 ثانبه راه اندازی شود.

لیستی از سایر امکانات

  • X.Org Server 1.6
    به گفته اینجا تعدادی از درایورها که رایگان شدهاند در این نسخه قرار داده شده اند. همچنین اشکالات درایور های کارتهای ati حل شده است.

  • New Notifications:
    پیغام های آگاهی دهنده یا همون Notifications زیباتر و استفاده از اونها راحت تر شده است.

  • Linux Kernel 2.6.29: نسخه جدید کرنل لینوکس.

  • Cloud computing
    در نسخه سرور از اوبونتو تکنولوژی Eucalyptus برای محاسبات ابری در نظر گرفته شده است. Eucalyptusدر مراحل ابتدایی کار خود قرار دارد و به عنوان نسخه preview عرضه شده است.




Ubuntu 9.04


دریافت این نسخه


به محض عرضه نسخه نهایی لینک دانلود رو در اینجا خواهم گذاشت. طبق معمول یک نسخه DVD شامل تمامی سه نسخه CD , Alternative و server گذاشته خواهد شد.

دریافت نسخه های مختلف:

برای مشاهده سایر سیستم ها از جمله نسخه 64 بیتی ویا دریافت از طریق تورنت به اینجا مراجعه کنید.

این هم از DVD شامل تمامی موارد بالا:

برای مشاهده سایر سیستم ها به اینجا مراجعه کنید.

دریافت سایر نسخه ها مراجعه کنید به:  Kubuntu و Xubuntu

نحوه ارسال CD توسط شرکت Canonical

در صورتی که می خواهید CD اصلی اوبونتو توسط شرکت canonical به دست شما برسه می تونید از الان برای دریافت ثبت نام کنید:

https://shipit.ubuntu.com که برای دریافت نسخه معمولی (Desktop) روی "Pre-order a CD of Ubuntu Desktop Edition" کلیک کنید.

برای ارسال درخواست باید عضو سایت بشوید که در این آدرس خواهد بود. پس از آن اطلاعات خود را دقیق وارد کنید. CD ها معمولا در مدت یک ماه تا دوماه می رسند.

مطالب مرتبط:

 

اشتباه IBM اوراکل Sun را می خرد

۱۳۸۸/۰۲/۰۱ ۲۳:۵۴ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۲/۰۱ دسته بندی : ، 1

همانطور که در مطلب "ایران و ترکیب احتمالی IBM و SUN" مشاهده کردید، IBM در صدد خرید Sun بود. طی هفته گذشته خبرها اینگونه پخش شد که این دو شرکت به خاطر اختلاف بر سر قیمت و افزودن حدود نیم بیلون دلار دیگر به مبلغ به توافق نرسیدند.

حدود کمتر از یک هفته از شکست مذاکرات IBM نگذشته که دیروز خبر مذاکرات خرید Sun توسط Oracle به ارزش 7.4 بیلیون دلار آمریکا در خبرگزاری ها پخش شد. یعنی کمی بیشتر از مبلغ پیشنهادی IBM.

خبر ناخوشایند برای IBM از دست دادن تکنولوژی مهم Java و افتادن آن به دست رقیب هست. همچنین خبر بد دیگر افتادن سیستم عامل Solaris مبتنی بر unix به دست رقیب هست. جایی که در حال حاظر اوراکل در حال استفاده از این سیستم عامل برای سرورهای خود جهت سرویس دهی بانک اطلاعاتی است. آنچه از این خرید مشخص خواهد بود یکپارچه سازی امکانات اواکل در این سیستم عامل است.

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

ترکیب غول ها همیشه زمانبر است و باید نشست و دید که در صورت انجام این خرید چه تصمیاتی گرفته خواهد شد.

منابع:
http://www.mercurynews.com/ci_12182642
http://www.guardian.co.uk/technology/blog/2009/apr/20/oracle-sun-takeover
http://tech.puredanger.com/2009/04/20/oracle-buys-sun/

 

افزونه فایرفاکس: تشخیص تغییرات DOM و CSS در صفحات وب

۱۳۸۸/۰۱/۲۹ ۱۳:۱۵ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۱/۲۹ دسته بندی : ، ، ، ، 0

FireDiff یک افزونه جدید برای فایرفاکس است که به افزونه Firebug اضافه می شود.

این افزونه این امکان را فراهم می کنه که تمامی تغییراتی که توسط جاوا اسکریپت به DOM صفحه و یا CSS آن اعمال می شود را ثبت نمابد.

این افزونه برای کسانی که در حال برنامه نویسی javascript و کار با صفحه وب هستند بسیار مفید خواهد بود.

FireDiff

FireDiff صفحه ای رو به FireBug با نام changes اضافه می کنه که لیست آخرین تغییرات در آن نمایش داده می شوند.

دریافت

ابتدا باید افزونه Firebug رو از اینجا دریافت کنید.

سپس خود FireDiff از این آدرس http://www.incaseofstairs.com/firediff دریافت کنید.

 

راهنمای آنلاین/آفلاین دلفی

۱۳۸۸/۰۱/۲۷ ۱:۲۱ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۱/۲۷ دسته بندی : ، ، 1

اگر شما هم از آندسته افرادی هستید که در نصب راهنمای دلفی 2009 یا 2007 دچار مشکل شدید embarcadero بالاخره راه حلی رو برای این مشکل معرفی کرد.

در صفحه زیر این شرکت به چند صورت راهنما ها را ارائه می کند که شامل PDF ، CHM و Online هستند.

در این آدرس: http://docs.embarcadero.com/products/rad_studio

برای مثال راهنمای آنلاین VCL دراین آدرس و راهنمای کلی و زبان در این آدرس قرار دارند.

* پ.ن: این آواخر به خاطر یه کار فشرده و مشغله ذهنی که دارم زیاد نمی تونم مطلب بنویسم و این رو به عنوان یه کم کاری موقت در نظر بگیرید. انشاله که گفتن همین باعث نتیجه عکس بشه و بتونم بنویسم.

موفق باشید.

 

Visual Paradigm ابزاری در دست تحلیل گران

۱۳۸۸/۰۱/۱۹ ۲۰:۴۴ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۱/۱۹ دسته بندی : ، ، 3

Visual Paradigm

زمانی که صحبت از تحلیل پروژه های نرم افزای به میان میاد اکثر افراد بی اختیار به یاد Rational Rose می افتند.
گرچه IBM Rational Rose یکی از قدرتمندترین ابزارهای مدلینگ و تحلیل پروژه ها است، ولی در این میدان تنها نیست.
یکی از رقیبان اصلی در این زمینه مجموعه ابزارهای Visual Paradigm هست. VP توسط یک شرکت چینی طراحی و توسعه داده شده که در مقابل امکاناتی که در اختیار قرار میدهد قیمت مناسبی دارد.
مجموعه Visual Paradigm Suit شامل چندین ابزار هست که به ترتیب عبارت هستند از:

Visual Paradigm for UML

VP-UML اصلی ترین نرم افزار این مجموعه است که برای مدل سازی مورد استفاده قرار می گیرد. در مبحث BPM با پشتیبانی از آخرین استاندارد مدلسازی گرافیکی پروسه های تجاری BPMN و پشتیبانی از دو نوع مدل سازی BPD و DFD که از دیگر قابلیت های مدلینگ این ابزار است.

در بحث مدسازی پایگاه داده، مدل سازی های ERD برای روابط فیزیکی پایگاه داده و ORM Diagram برای روابط کلاسها و entity ها پشتیبانی می شوند.

همچنین پشتیبانی از UML 2.1 و تولید کد ازنمودارهای class برای اکثر زبانهای برنامه نویسی از دیگر امکانات مهم این نرم افزار است.

علاوه بر این امکان واردکردن پروژه های Rational Rose نیز وجود دارد و می توانید خروجی کامل از پروژه را در قالب های مختلف تهیه کنید.
Visual Paradigm for UML

Smart Development Environment

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

از محیط های Visual Studio, Eclipse, JBuilder, NetBeans و غیره پشتیبانی میشود.

Agilian

مجموعه ابزارها برای مدل سازی متودولوژی های agile که در یکجا در دسترس هستند. علت جداشدن این بخش از VP-UML تمرکز بر روی ویژگی های agile است.

سایر ابزارهای این شرکت به صورت لیست وار:

*پ.ن   : به علت اینکه فقط لایسنس VP-UML رو داشتم ، بررسی سایر ابزارهای محیا نشد و به همین معرفی جزئی اکتفا می کنم.

 

ضعف امنیتی Wordpress و از دست رفتن این وبلاگ

۱۳۸۸/۰۱/۱۲ ۱۳:۰۷ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۱/۱۲ دسته بندی : ، 6

علت اینکه این چند روزه در نوشتن تاخیر داشتم مشکلی بود که در سیستم Wordpress ایجاد شده بود.

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

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

در چند روز اخیر چندیدن ایمیل مشکوک هم از این طریق به کاربران Wordpress ارسال شده که ظاهرا از وی خواسته بودند تا برای اضافه کردن لیست دوستان کلمه عبور Gmail خودش رو وارد کنند که این باعث شده بود ایمیل های برخی افراد نیز به دست هکر ها بیافته.

به هر حال توصیه اکید من این است که تا زمانی که فرصت هست از وبلاگ خود پشتیبانی کامل تهیه کنید و آن را همین امروز ترک کنید!

به همین خاطر این آخرین پست من خواهد بود و از همه شما دوستان به خاطر همراهی دراین مدت تشکر می کنم.

پ.ن: مثل اینکه مشکلی در ورود من به gmail پیش اومده! خدا به داد من برسه، چونکه تمامی پسوردها به اونجا ارسال شده و من به چند جا پاسخ گو هستم...! :( خدا لعنتوش کنه با این کد نویسی

به روز رسانی 14 فروردین:


این دروغ سیزده یا اول آوریل بود! از دوستان تشکر می کنم. هیچ مشکلی نه برای من و نه برای Wordpress رخ نداده و آسوده باشید که همه جا امن و امان است.

 

ایران و ترکیب احتمالی IBM و SUN

۱۳۸۸/۰۱/۰۴ ۱۶:۲۹ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۱/۰۴ دسته بندی : ، ، ، 5

IBM Sun

اگه در جریان خبرهای دنیای IT باشید حتما شنیده اید که IBM بر سر میز مذاکره خرید Sun به مبلغ 6.5 بـیلیـون دلار آمریکا هست.
این خرید در صورتی که اتفاق بیفته یکی از رویداد بسیار مهم سالهای اخیر خواهد بود چرا که Sun سازنده Java و پیشتاز تکنولوژی های وابسته در 15 سال گذشته هست.

قبل از اینکه به مقوله ایران بپردازم به بررسی تاثیرات این ترکیب بر محصولات این دو غول می پردازم.

Java
جاوا پرکاربردترین زبان برنامه نویسی و صد البته مهمترین تکنولوژی در دست این دو شرکت است. همانطور که شاید بدانید هردو شرکت IBM و SUN دارای کتابخانه زمان اجرای جاوا (JVM) هستند.
نتیجه این ترکیب می تواند open source تر شدن کتابخانه های Sun به عنوان اصلی ترین سازنده کتابخانه های جاوا بشود. چرا که sun با داشتن لیسانس opensource مخصوص به خود محدودیت هایی را ایجاد کرده است.
آنچه که از وابستگی محصولات IBM به جاوا و تاریخچه این شرکت نتیجه می شه اینه که این شرکت به هیچ وجه کنترل و توسعه جاوا را به شرکت زیر مجموعه احتمالی sun خود نخواهد داد و سعی خواهد کرد محصولی قوی تر و ترکیبی از این دو کتابخانه بدست بیاورد.

ابزارهای Java
IBM قبلا محیط توسعه مخصوص خود را برای Java داشت که البته به Eclipse انتقال یافت. هم اکنون نیز این شرکت به شدت از Eclipse همایت می کند. در آن طرف Netbeans قرار دارد که به شدت توسط Sun توسعه داده می شود.
تنیجه این ترکیب می تونه به سیاست های بعدی شرکت ترکیب شده IBM/Sun بستگی داشته باشه که پشتیبانی حرفه ای از یکی از این محصولات را به مرور زمان حذف کند. به هر حال در طولانی مدت این دو محصول نخواهند توانست با هم کنار بیایند و یکی باید حذف شود.

بانک اطلاعاتی

MySQL محصول فعلی Sun رو می توان گل سرسبد شرکت ترکیب شده دانست. دلیل آن هم به خاطر تعداد کاربران و همچنین متخصصین آن کاملا مشخص است.
در آن طرف DB2 محصول IBM قرار دارد که برای پایگاه داده های بزرگ و سرور ها طراحی شده است.
از اونجایی که MySql محدودیت کاری برای کاربران سطح پایین تا سرور های بزرگ را ندارد که این حیطه گسترده برای DB2 وجود ندارد، مطمئنا شرکت ترکیب شده از MySql برای جذب کاربران بیشتر و سپس سوق دادن آنها به سمت DB2 استفاده خواهد.
به هر حال شاید همکاری و تعامل هرچه بیشتر این دو پایگاه داده خواهیم بود.

سیستم عامل

AIX سیستم عامل بر مبنای Unix شرکت IBM در مقابل Solaris شرکت Sun که آن هم بر مبنای Unix است حرفی برای گفت ندارد. این احتمال قوی است که کاربران AIX به یک نسخه ویژه از Solaris انتقال داده بشوند.
از آنجایی که Sun هیچ نسخه ای از سیستم عامل مبتنی بر Linux ندارد این احتمال بعید به نظر نمی رسد که آبی بزرگ هم از ویژگی Solaris به سیستم عامل لینوکس خود اضافه کند.

در حال حاضر هر دو شرکت به شدت در حال تلاش در پیشرفت در محاسبات ابری (cloud-computing) هستند. آنچه که مسلم است ترکیب تیم تحقیقات این دو شرکت و پیشرفت سریع تر شرکت ترکیب شده در این زمینه است.

و سرانجام از لحاظ سخت افزار از آنجایی که IBM ارادت خاصی به پردازنده Power خود دارد به احتمال قوی شاهد توقف خط تولید پزدازنده های SPARC و اضافه شده تیم آن به تیم پردازنده Power و PowerPC باشیم.

و اما ایران

حدس من در مورد ایران، تغییرات ناچیز هست. متاسفانه منبع خاصی برای تایین تعداد کاربران زبانهای برنامه نویسی وجود ندارد و البته آماری هم تهیه نمی شود.
اما آنچه از فروم ها و سایتهای برنامه نویسی ایرانی هویدا است تعداد کاربران جاوا در ایران بسیار کم. اگر رده بندی من را بخواهید خواهم گفت که جاوا بعد از C# ، VB ، C و احتمالا Delphi در رده بعدی قرار خواهد گرفت.
دلایل این کم احمیتی فعلا در بحث ما جایی ندارد ولی تا اینقدر بدانید که رایگان بودن محصولات ماکروسافت در ایران دلیل اصلی این مسئله است.

تغییرات حاصله از ترکیب این دو شرکت بیشتر در زمینه بانک اطلاعاتی و ابزارهای Java در ایران مشاهده خواهد شد.
هر دو محیط توسعه Netbeans و  Eclipse با توجه به نظر سنجی هایی که در فروم برنامه نویس و سایتی دیگر انجام شده تقریبا تعداد کاربر یکسانی دارند. پس می توان نتیجه گرفت که با محو یا حذف تدریجی یکی از این دو محصول شاهد مهاجرت کاربران به محیط دیگری باشیم که اتفاق مهمی نخواهد بود.

در مورد بانک اطلاعاتی همانطور که در بالا ذکر کردم MySql همچنان با قدرت به کار خود ادامه خواهد داد. با توجه به اینکه MySql در میان Php کاران و Linux کراران طرفدار بسیاری دارد، پس نگرانی در این زمینه وجود نخواهد داشت.
نتیجه ای که البته بعید هم به نظر نمی رسد حرکت عده ای به سمت DB2 خواهد بود تا از ویژگی های این پایگاه داده هم مطلع بشوند. با توجه به اینکه یک نسخه رایگان و کوچک از این پایگاه داده هم عرضه می شود.

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

این ترکیب بر دنیای برنامه نویسان جهان بسیار تاثیر گذار خواهد بود. بزرگترین اثر گرفته از این ترکیب Oracle خواهد بود. چراکه بسیاری از برنامه ها و سیستم های مدیریت پایگاه خود را بر پایه Java پایه نهاده و صد البته چشم به نتیجه این مذاکرات دوخته است.

موفق باشید.

منابع:

http://www.sdtimes.com/link/33356
http://www.infoworld.com
http://www.multicoreinfo.com
http://osnews.com

مطالب مرتبط:

دریافت نسخه جدید Netbeans 6.5 به همراه JDK

 

سال نو مبارک

۱۳۸۷/۱۲/۲۹ ۱۳:۲۲ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۷/۱۲/۲۹ دسته بندی : 5

این پست آخرین پست من در سال 87 هست. پیشاپیش سال نو رو به همه شما عزیزان تبریک می گم. امیدوارم که همیشه خوش و خرم باشید. اگه فرصت شد تو تعطیلات می نویسم.

سال نو مبارک

در ضمن امسال سال گاو است. انشااله که با کم شدن سایه شوم از کشور گوشه ای از خورشید امید رو ببینیم و گاو ما هم بتونه کمی شیر بده.

این هم از گاو ما

 

Lesley Roy

۱۳۸۷/۱۲/۲۵ ۱۲:۵۷ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۷/۱۲/۲۵ دسته بندی : ، ، 4

Lesley Roy یک خواننده های جوان و البته همسن من هست که در سال میلادی قبل یعنی 2008 اولین البوم خودش رو روانه بازار کرد. این خواننده ایرلندی الاصل در سبک Power Pop خوانندگی می کنه که البته به نظر خودم چند تا آهنگ اول و اصلی اون در سبک های PopRock و Rockهستند.

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

Lesley Roy Unbeautiful

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


  1. "I'm Gone, I'm Going"

  2. "Here for You Now"

  3. "Slow Goodbye"

  4. "Unbeautiful"

  5. "Psycho Bitch"

  6. "When I Look at You"

  7. "Thinking Out Loud"

  8. "Dead But Breathing"

  9. "Misfit"

  10. "Make It Back"

  11. "Crushed"

  12. "Come to Your Senses"

  13. "Come Back"

  14. "I Don't Want to Want You" Bonus Track



در این میان آهنگ ها Slow Goodbye وUnbeautiful و I'm Gone, I'm Going و Psycho Bitch زیبا بودند و لذت بردیم.

لینک دانلود این آلبوم از تورنت

  • مطالب مرتبط


آلبوم جدید Metallica با نام Death Magnetic