ویروس گرفتم

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

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

پیدا کردن، پاکسازی و جایگزین کردن فایل‌های ویروسی حدود ۳ ساعت از من وقت گرفت.

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

ارسال شده در عمومی | برچسب‌شده , | ۶ دیدگاه

PHP، SQL Server و زبان فارسی

در هنگام ذخیره و بازیابی عبارت‌های فارسی( یونیکد ) در SQL Server از طریق php با چند مشکل مواجه خواهید شد

مشکل نخست آنکه با استفاده از کتابخانه‌های پیش‌فرض php امکان ذخیره و بازیابی در SQL Server 2008 ممکن نیست
برای حل این مشکل باید فایل زیر را دریافت کنید و در شاخه‌ی php جایگزین کنید
قبل از جایگزین کردن از فایل اصلی پشتیبان تهیه کنید

http://www.helpspot.com/downloads/files/ntwdblib.dll

مشکل دوم آنکه فیلدهای متنی فارسی معمولا با فرمت nvarchar یا ntext ذخیره می‌شوند
و از طرفی رابط انتقال دهنده‌ی عبارت‌ها از php به SQL با فرمت ANSI کار می‌کند

اگر هدف ذخیره‌ی اطلاعات در فیلد nvarchar باشد، تبدیل متن از UTF-8 به UCS-2LE ( یونیکد استاندارد ویندوز ) و سپس تبدیل متن به varbinary مشکل را حل می‌کند:

<?php
	$utf8 = 'متن فارسی';
	$ucs2 = iconv('UTF-8', 'UCS-2LE', $utf8);
	$hex = unpack( 'H*hex', $ucs2 );
	$varbin = "0x{$hex['hex']}";
 
	mssql_query( "INSERT INTO mytable ( nvarcharField ) VALUES ( $varbin )", $link );
?>

و مشکل سوم در هنگام ذخیره‌ی متن در فیلدهایی با فرمت ntext به وجود می‌آید
در این نوع فیلد تبدیل ضمنی از varbinary انجام نمی‌شود و راه حل آن تبدیل صریح با کمک دستورات SQL هست:

<?php
	mssql_query( "INSERT INTO mytable ( ntextField ) VALUES ( CAST( $varbin AS NVARCHAR( 1000 ) )", $link );
?>

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

<?php
	$result = mssql_query( 'SELECT CONVERT( VARBINARY( 1000 ), nvarcharField ) FROM mytable', $link );
 
	while ( ( $row = mssql_fetch_array( $result, MSSQL_BOTH ) ) ){
		echo( iconv( 'UCS-2LE', 'UTF-8', $row[ 'nvarcharField' ] ) );
	} 
?>

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

ارسال شده در PHP, برنامه‌نویسی, پایگاه داده | برچسب‌شده , | ۱۴ دیدگاه

لزوم بهینه‌سازی و پایبندی به استانداردها در جاوااسکریپت

ECMA Script

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

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

با تثبیت استاندارد xhtml و html5 گام بزرگی در تغییر این رویکرد برداشته شد. قدم بعدی انجام تغییرات بنیادی در سیستم پردازش و تفسیر جاوااسکریپت است.

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

در استاندارد جدید که به ECMAScript 5 شهرت دارد، تغییرات جدیدی به وقوع پیوسته که مهم‌ترین آن «strict mode» است. تغییر وضعیت اسکریپت به strict mode که برنامه‌نویسی جاوااسکریپت را هر چه بیشتر به محدودیت‌های موجود در زبان‌هایی مانند C نزدیک می‌کند با کد زیر ممکن است.

"use strict";

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

با مطالعه‌ی برگه‌ی یادشده، دید شما نسبت به بهینه‌سازی بازتر خواهد شد و خواهید توانست کدهایی با بیشترین سرعت و بیشترین سازگاری با مرورگرهای آینده بنویسید

ارسال شده در برنامه‌نویسی, جاوااسکریپت | برچسب‌شده , | دیدگاه‌تان را بنویسید

MSU Screen Capture Lossless Codec 1.2

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

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

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

در تصویر زیر می‌توانید نمودار کارایی کدک‌های مختلف رو برای چند فیلم تهیه‌شده از صفحه‌ی نمایش مشاهده کنید:

تارنمای کدک

دریافت نسخه‌ی ۱.۲ با حجم ۱۱۱ کیلوبایت

ارسال شده در نرم‌افزار | برچسب‌شده , | ۵ دیدگاه

ارجاع به عقب( Backreference ) در عبارت‌های منظم

دانستن عبارت‌های منظم( Regular Expressions ) در برنامه‌نویسی روند توسعه‌ی نرم‌افزار را سرعت چشم‌گیری می‌بخشد.

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

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

<span>AMIB 1</span>
<div>AMIB 2</div>
<h1>AMIB 3</h1>

برای انجام این کار، می‌توان از ارجاع به عقب بهره گرفت:

<([a-z][a-z0-9]+)>AMIB.+?</\1>

ارجاع به عقب در حقیقت استفاده‌ی مجدد از بخش‌های یافته‌شده‌ی قبلی است. در مثال بالا، عبارت ’1\’ یک ارجاع به عقب است. این ارجاع معادل متغیر یافته شده در پرانتز ابتدایی است.
هر مقداری که در پرانتز ابتدایی یافته شود، در این ارجاع نیز کپی خواهد شد. برای دسترسی به متغیرهای دوم تا نهم کافی‌است از عبارت‌های ’2\’ تا ’9\’ استفاده کنید.

به علامت سوال «?» پس از +. توجه کنید. به کار بردن این علامت سوال سبب می‌شود تا کوتاه‌ترین عبارت ممکن جستجو و در نتیجه، تگ انتهایی به درستی انتخاب شود.

ارسال شده در برنامه‌نویسی, عبارت‌های منظم | برچسب‌شده , , | یک دیدگاه

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

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

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

ارسال شده در PHP, برنامه‌نویسی, فناوری, نرم‌افزار | برچسب‌شده , | دیدگاه‌تان را بنویسید

افزایش سرعت بارگزاری صفحات php و html با چند تکنیک ساده

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

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

ارسال شده در HTML, PHP, برنامه‌نویسی | برچسب‌شده | ۸ دیدگاه

راهنمای ایجاد دامنه و زیردامنه‌های محلی با کمک کارساز آپاچی( Apache )

نشان کارساز آپاچی

به عنوان یک توسعه‌دهنده‌ی وب ممکن است نیاز داشته باشید تا علاوه بر نشانی localhost از نشانی‌ها و یا زیردامنه‌های دیگری برای آزمایش برنامه‌های خود بهره‌گیری کنید.
برای مثال ممکن است بخواهید از نشانی http://test.localhost یا http://test که به شاخه‌ای اختیاری بر روی دیسک شما اشاره می‌کند استفاده کنید.
ادامه‌ی خواندن

ارسال شده در PHP, برنامه‌نویسی, نرم‌افزار | برچسب‌شده , , | ۸ دیدگاه

سفارش‌های مایکروسافت برای استفاده‌ی کارآمد از DataGridView در دات نت

برای مشاهده‌ی مقاله‌ی انگلیسی اینجا کلیک کنید

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

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

  • استفاده‌ی کارآمد از قالب‌بندی‌ها( Style ) برای سلول‌ها
  • استفاده‌ی کارآمد از منوهای میانبر
  • استفاده‌ی کارآمد از تغییر اندازه‌ی خودکار
  • به‌کارگیری کارآمد کلکسیون سلول‌ها، ردیف‌ها و ستون‌های انتخاب شده
  • به‌کارگیری ردیف‌های اشتراکی( Shared )
  • پیش‌گیری از حالت غیراشتراکی ردیف‌ها

ادامه‌ی خواندن

ارسال شده در برنامه‌نویسی, دات نت | برچسب‌شده | یک دیدگاه

HipHop رمز سرعت بالای فیسبوک

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

توسعه‌دهندگان فیسبوک نیز برای حل مشکل، راه‌حل‌های مختلفی را بررسی و آزمودند، بهترین راه حل آن‌ها ایجاد HipHop بود.
HipHop ابزاری است که کدهای php را به C++‎ تبدیل می‌کند و سپس این کد با کمک کامپایلر gcc به زبان ماشین کامپایل می‌شود.

البته امکان توسعه‌ی سایت بر پایه‌ی C++‎ نیز فراهم است. از طرفی سختی برنامه‌نویسی با این زبان و از طرفی سادگی زبان php و کتابخانه‌های آماده‌ی php برای توسعه‌ی ابزارهای تحت وب سبب شدند تا این گزینه رد شود.

HipHop ابزاری است رایگان و متن‌باز که سبب می‌شود کارایی تا حدود ۵۰ درصد افزایش یابد. این مقدار افزایش کارایی یعنی ۵۰ درصد هزینه‌ی کمتر برای سخت‌افزار و به همین‌نسبت هزینه‌ی کمتر نگهداری و مصرف انرژی.

با توجه به اینکه خروجی HipHop زبان ماشین است، برای استفاده کردن از این فناوری لازم است تا یک سرور اختصاصی( Dedicated Server ) یا سرور مجازی( Virtual Private Server ) در اختیار داشته باشید و با انجام تنظیمات لازم از HipHop به عنوان خدمت‌رسان سرور وب خود بهره‌برداری کنید.

در حال حاضر HipHop از کدهای نوشته شده با PHP 5.2 پشتیبانی می‌کند. انجام تغییرات برای پشتیبانی از PHP 5.3 آغاز شده و در آینده‌ی نزدیک به پایان خواهد رسید.

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

برای اطلاعات بیشتر به صفحات زیر مراجعه کنید
https://github.com/facebook/hiphop-php/wiki/
http://developers.facebook.com/blog/post/358/

ارسال شده در PHP, برنامه‌نویسی | دیدگاه‌تان را بنویسید