فتوشاپ بدون شما هم كار مي كند !
فتوشاپ كاران حرفه اي دلشان مي خواهد كاري كنند همه به اين احساس شاعرانه برسند كه آنها روزهاي مديد عمرشان را صرف خلق آثار بزرگ ديجيتالي مي كنند , تا شايد آثارشان مورد اقبال عمومي قرار گيرد. ولي باور نكنيد. به شما اطمينان مي دهم اگر به زندگي كاري اين افراد نگاهي بياندازيد خواهيد ديد آنچه پشت پرده مي گذرد بسيار پيش پا افتاده تر از اين اغراق ها است. در دنيا چند وظيفه اي DVD چاپ و وب امروز , غالب هنرمندان عرصه تصاوير ديجيتالي , زماني را كه صرف اجراي دستورات خط توليد گونه و يكنواخت كردن تصاوير گوناگون براي انواع مختلف رسانه هاي صوتي , تصويري مي كنند بسيار بيشتر از آن چيزي است كه حاضرند به آن اعتراف نمايند. شايد تعجب كنيد اگر بگويم بعد از نگارش 4 كه قابليت Action به فتوشاپ اضافه گرديد , روز به روز بر تعداد كساني كه از Action استفاده مي كنند , افزوده شده است. اين قابليت عالي به شما اجازه مي دهد با ضبط ماكروها , بسياري از امور طاقت فرساي مربوط به ويرايش هاي زيربنايي تصاوير را به صورت خودكار به انجام برسانيد. استفاده از ماكرو Action بسيار ساده است , ولي اگر قرار باشد به تنهايي مورد استفاده قرارگيرد محدوديت هايي نيز دارد (مثلا كارهاي Action را فقط مي توان بر روي تصوير فعال باز شده در فتوشاپ اعمال كرد). البته فتوشاپ اين مشكل را به كمك قابليت ديگري به نام Batch Automation حل كرده است (براي استفاده از اين قابليت , در مسير File - Automate را انتخاب كنيد). اين قابليت به شما اجازه مي دهد اعمال Action تعريفي خود را بر روي تمام تصاوير موجود در يك دايركتوري مشخص اجرا كنيد. مروري كوتاه بر Action براي اين كه بتوانم تصاوير JPEG گرفته شده با يك دوربين ديجيتالي را براي چاپ آماده كنم از قابليت Batch فتوشاپ استفاده مي نمايم , تا آنها را به CMYK Tiffs تبديل كنم. در واقع برنامه 2.0 Elements كه ارزان تر از فتوشاپ است قابليت Batch مشابهي دارد كه فقط براي اين منظور طراحي شده است. روتين Batch را صرفا مي توان بر روي يك دايركتوري (و تبعا زير دايركتوري هاي درون آن) اعمال كرد , اما من راهي پيدا كرده ام كه با آن مي توان اين محدوديت را برداشت. براي اين منظور يك Shortcut از تمام دايركتوري هايي كه مي خواهيد روتين Batch بر روي آنها اعمال شود را در دايركتوري اصلي قرار دهيد. بزرگترين ضعف Action , بي منطقي آن است روتين هاي منطقي (كه به دستورالعمل هاي شرطي if…Else نيز مشهورند) عملا هنگام پردازش تصاوير از اهميت بسيار بالايي برخوردارند. به عنوان مثال فرض كنيد , مي خواهيد قطع يك تصوير را فقط در صورتي تغيير دهيد كه آن تصوير خوابيده يا ايستاده باشد. يا مثلا مي خواهيد اندازه يك تصوير تنها زماني تغيير كند كه تعداد پيكسل هاي آن از حد معيني بيشتر باشند و در غير اين صورت آن را به همان حال رها كنيد. مشكل ماكروهاي Action اين است كه نمي تواند بين اين وضعيت ها تفاوتي قائل شوند. خوشبختانه فتوشاپ از ابزار اتوماسيون ديگري به نام اسكريپت نويسي (Scripting) نيز سود مي برد گرچه كمتر كسي از آن استفاده مي كند ولي روتين هاي منطقي را نيز پشتيباني مي نمايد. اسكريپت هاي فتوشاپ را هم مي توانيد به ويژوال بيسيك اسكريپت بنويسيد و هم به زبان جاوااسكريپت (فتوشاپ , يا حداقل 7 كه بنده با آن آشنايي دارم , به صورت داخلي قادر به پشتيباني از قابليت پردازه نويسي نيست. براي افزودن اين قابليت به آن ابتدا لازم است Plug-in مخصوصي كه در آدرس http://www.adobe.com/support/downloads/detail.jspftpID=1536 قرار دارد را دريافت و نصب كنيد. پس از نصب Plug-in فوق , گزينه جديدي به نام Scripts به منوي File a Automate فتوشاپ اضافه مي گردد). با قدرت جاوا از كدام زبان بايد استفاده كنيد؟ خوب ... هر يك مزاياي خودش را دارد. ويژوال بيسيك اسكريپت زباني جهاني است كه به شما اجازه مي دهد به ساير برنامه هاي كاربردي لينك بزنيد , به طوري كه فقط با يك اسكريپت مي توانيد يك روندكاري كامل را برنامه ريزي كنيد. اسكريپت هاي جاوااسكريپت از اين نظر محدوديت دارند و صرفا از طريق File - Scripts اجرا مي شوند. ولي در عوض جاوااسكريپت زباني است كه به سيستم عامل خاصي وابسته نيست و تقريبا در تمام برنامه هاي كاربردي مالتي مديا نيز حضور دارد (حتي Director قديمي نيز در نگارش MX2004 به جاوااسكريپت مجهز شده است). در واقع وقتي جاوااسكريپت را بياموزيد مي توانيداز دانسته هاي خود در تمام نرم افزارهاي مالتي مديا استفاده كنيد. حتي اگر آشنايي اندكي با جاوااسكريپت يا ويژوال بيسيك اسكريپت داشته باشيد , نيز باز مي توانيد در فتوشاپ دست به اقدامات محيرالعقولي بزنيد , چرا كه Actionها را نيز مي توان از داخل اسكريپت ها فراخواند. بنابراين فقط كافيست يك Action از قبل ضبط شده را در يك اسكريپت ابتدايي جاوااسكريپت مابين يك دستورالعمل شرطي قرار دهيد تا به روتين هاي فتوشاپ قدرت تفكر ببخشد. كد كوتاه جاوااسكريپت صفحه مقابل نحوه كار را نشان مي دهد. دو خط ساده اول مشخص مي كنند آيا عرض تصوير فعال شده باز در فتوشاپ از ارتفاع آن بيشتر است يا خير. اگر چنين بود , Action از قبل ضبط شده اي كه من در Default Action.atn آن را firstAction ناميده ام توسط اسكريپت مذكور به اجرا گذاشته مي شود. (بديهي است اين Action يا هر Action ديگري نيز مي تواند باشد و اين به انتخاب شما بستگي دارد). اما اگر ارتفاع تصوير بيشتر از عرض آن باشد , Action ديگري به نام SecondAction (كه همان set قرار دارد) به اجرا در خواهد آمد. if (app.activeDocument.width > app. activeDocument.height) doAction(firstAction , DefaultActions.atn) , else { doAction (secondAction , DefautActions.atn) } به همين سادگي !... اسكريپتي كه دستورالعمل شرطي آن فقط چهار خانه دارد. اسكريپت ساده فوق بيانگر اين حقيقت است كه براي ساختن روتين هاي پيچيده اتوماسيون سازي و اعمال آنها بر روي يك تصوير , حتما لازم نيست يك اسكريپت ساده نويس حرفه اي باشيد. اعمال اسكريپت ها به صورت دسته اي حتي اگر بپذيريد اسكريپت نويسي چيز مفيدي است , حتما الان با تعجب از خود مي پرسيد اسكريپت ها را نيز كه فقط مي توان بر روي يك تك تصوير اجرا كرد , پس چگونه مي توان از اين دستورالعمل هاي شرطي براي پردازش تصاوير به صورت دسته اي كمك گرفت؟ انجام اين كار بسيار آسان تر از آن چيزي است فكر مي كنيد. درست به همان سادگي كه يك Action را درون يك اسكريپت قرار مي داديد , به همان سادگي نيز مي توانيد اسكريپت ها را از طريق منوي Scripts به عنوان يك ماكرو در پالت Action ضبط كنيد (به عبارت ساده تر , اگر كليد ضبط ماكروي پالت Actions را فعال كرده و سپس از طريق منوي Scripts , اسكريپت مورد نظر را فرا بخوانيد , آن اسكريپت به عنوان يك ماكرو به پالت Actions اضافه خواهد شد). اگر Action ضبط شده نهايي را ذخيره كنيد مي توانيد آن را از طريق منوي File - Automate - Batch بر روي كل محتويات يك دايركتوري اعمال نماييد. توجه داشته باشيد براي نوشتن اسكريپت هاي جاوااسكريپت نيازي به خريد يك ويرايشگر گران قيمت نيست , بلكه براي اين كار از يك ويرايشگر ساده متن مثل Wordpad نيز مي توانيد استفاده كنيد. در صورتي كه فايل نهايي را با پسوند JS ذخيره نماييد , فتوشاپ به صورت خودكار آن را شناسايي خواهد كرد. براي اين كه بتوانيد مستقيما از طريق منوي Scripts به اسكريپت هاي خود دسترسي پيدا كنيد كافيست آنها را در دايركتوري Presets - Scrips (واقع در دايركتوري محل نصب فتوشاپ) ذخيره نماييد. با انجام اين كار اسكريپت ها مستقيما از طريق منوي Script فتوشاپ قابل انتخاب شما خواهند شد. اگر آنها را در اين دايركتوري ذخيره نكيند , براي اجراي اسكريپت ها مي بايست از گزينه Browse موجود در منوي Script استفاده كنيد. براي اين كه ببينيد با اسكريپت نويسي چه كارهايي مي توانيد انجام دهيد راهنماي پردازه نويسي جالبي كه همرا فتوشاپ نصب مي شود را مطالعه نماييد كه ارزش آن را دارد.
نظر یادتون نره؟
موتورهای جستجو گر مختلف رتبه های مختلف؟؟
چگونه ممکن است ؟
از سلسله مباحث بهينه سازي سايت براي موتور هاي جستجوي اينترنت امروز به مساله رتبه هاي مختلف در جستجو گر هاي مختلف ميپردازم.
يکي از صفحه هاي اينترنتي من در گوگل رتبه سوم دارد و در msn همواره نخستين نتيجه جستجو است. چگونه ممکن است ؟
ممکن است تعجب کنيد اما اين يک مساله کاملا طبيعي است. زيرا هر موتور جستجو الگوريتم خاص و محرمانه خودش را دارد و با توجه به اهميت و اولويت فاکتورهاي اولويت بندي نتايج جستجو ، ممکن است نتايج متفاوتي ببار آيد.
اين که شما کدام موتور جستجو را بيشتر بايد مد نظر قرار دهيد کاملا به کاربران و مخاطبان شما بستگي دارد. و سعي نکنيد از سليقه شخصي براي اين تمرکز روي يک جستجو گر استفاده کنيد.
يک نکته ديگر که بايد مد نظر داشته باشيد اين است که رتبه سايت شما کاملا به کليدواژه هايي که جستجو مي کنيد بستگي خواهد داشت. براي نمونه ممکن است سايت شما هنگام جستجوي يک عبارت رتبه 12 داشته باشد و در جستجوي ديگري با يک عبارت ديگر، رتبه 1264 را بدست آورد.
پس مهم اين است که شما بهبود جايگاه خود را براي چه عبارتهايي مد نظر داريد.
موضوع عبارتها و حالتهاي ترکيبي آنها در درس سوم بررسي خواهد شد.
چکیده :
کارهايي که بايد بکنيد :
• گام به گام جلو برويد.
• صبر و حوصله داشته باشيد
• بروز رساني و گنجاندن مطالب تازه را فراموش نکنيد.
• لينکهاي خراب و پيوندهاي شکسته را حذف کنيد.
• کليدواژه ها را بکار ببريد نه رديف کنيد !
کارهايي که نبايد بکنيد.
• از توليد صفحات آينه اي خودداري کنيد.
• از قابها تا حد امکان کم استفاده کنيد
• از قالبهاي سنگين و پيچيده کمتر استفاده کنيد
• محتوي صفحه را بررسي و بازنگري کنيد.
• از تکرار بيهوده کلمه هايي که گمان ميکنيد مهم هستند خودداري کنيد.
• اخلاق اينترنت را رعايت کنيد !
در باره هر يک از موارد بالا بعدا توضيح کاملتر خواهم داد. اگر نکته اي برايتان مبهم است لطفا بپرسيد.
يادتان باشد که هر پنج شنبه سري به اينجا بزنيد. وبلاگ SEO هر پنج شنبه بروز خواهد شد.
کلمات کلیدی : iran , seo, SEM, Persian Search web site, iranian
نظر یادتون نره؟
مقدمه اي بر PHP و مقايسه آن با Perl CGI
امروزه با توجه به اينکه روز به روز بر تعداد ميزبانهايي که PHP رو ساپورت ميکنند افزوده ميشود ، صحبت در مورد PHP و قابليتهاي آن در ميان طراحان وب و برنامه نويسان زياد است.
براي کساني که فقط نامي از PHP شنيده اند و از تواناييها و مزيت هاي PHP آگاهي ندارند در اين مقاله PHP رو به طور مختصر شرح شرح ميدهم و آن را با اسکريپتهاي CGI مقايسه ميکنم.
PHP يک زبان طرف خادم (server side ) مي باشد و شما ميتوانيد براي ساخت صفحات ديناميک وب از آن استفاده کنيد. براي مثال مديريت و ساماندهي اطلاعات دريافتي از يک form اچتمل با PHP بسيار آسان است.
1- زبان:
اگر شما با زبانهاي C , C++ , Perl يا Java کار ميکنيد ياد گرفتن زبان PHP ميتواند مانند زنگ تفريح باشد! در واقع شما خيلي سريع ميتوانيد اسکريپت نويسي را با PHP شروع کنيد.
متغيرها در PHP مانند PHP هستند (با پيشوند $ ) و انواع مختلف داده ها را ميتوانند در خود ذخيره کنند. براي مثال $whatever ميتواند انواع داده ها شامل رشته اي ، عددي و غيره را در خود نگه دارد.
اگر مقدار $whatever يک عدد باشد شما ميتوانيد مقدار آن را اينگونه افزايش دهيد:
$whatever ++;
يا
$whatever =+1;
يا
$whatever=$whatever+1;
که دقيقا همان روشي است که در C ، C++ ، Perl يا Java به کار ميبرديد.
2- تسهيلات توکار (Built-in facilities )
بر خلاف Perl که يک زبان همه منظوره است و شما ميتوانيد تقريبا هر برنامه اي را با آن بنويسيد ، PHP از ابتدا با هدف اسکريپت نويسي براي صفحات وب درست شده ، از اينرو اسکريپت نويسي براي صفحات وب در PHP بسيار آسانتر از Perl مي باشد.
براي مثال ميخواهيم از يک فرم در يک صفحه وب ايميلي را به آدرس خودمان ارسال کنيم. به کمک Perl شما احتمالا کدي شبيه زير را مينويسيد :
open ( MAIL,"|/usr/sbin/sendmail -t");
print MAIL "To: myself\@mydomain.com\n" ;
print MAIL "From: visitor\@hisdomain.com\n" ;
print MAIL "Subject: Comments from Web Form\n\n" ;
print MAIL $mainmessage ;
close ( MAIL ) ;
اما همين برنامه در PHP به شکل زير نوشته مي شود :
mail ( "myself@mydomain.com", "Comments from Web Form",
$mainmessage, "From: visitor@hisdomain.com" );
خب حتما تفاوت اين دو زبان در سادگي و راحتي را متوجه شده ايد!
اين سادگي و رواني براي بقيه کارها هم صادق است ، مانند فرستادن يا بازيابي يک پرونده با FTP يا HTTP.
همانطور که گفته شد اين سادگي از اونجا ناشي ميشه که PHP فقط براي برنامه نويسي براي صفحات وب طراحي شده است.
تسهيلات ديگر آن در اداره کردن input هاي يک form مي باشد ، براي مثال يک فرم مانند زير را در نظر بگيريد:
<input
type=text name="dateofbirth">
شما خيلي راحت و سريع مي توانيد به محتويات اين فرم در متغير $dateofbirth دسترسي داشته باشيد. نيازي به تجزيه و تحليل input هاي فرم نيست.
تمام فيلد ها در يک فرم به طور اتوماتيک به متغيرهايي تبديل ميشوند که شما خيلي راحت ميتوانيد به آنها دسترسي داشته باشيد.
دسترسي به پايگاه داده ها هم به همين شکل اسان و راحت است. کار با پايگاه هاي داده مانند MySQL, MSQL, Dbase, Oracle, InterBase, از قابليتهاي ذاتي (Built-in) PHP است . PHP حتي براي رمزنگاري MIME هم تابعي در نظر گرفته است. قابليتها و تسهيلات PHP بسيار زياد است و طبيعتا ممکن نيست به همه آنها را در اين مقاله اشاره کرد.
اشاره به اين چند مورد هم فقط براي اين بود که تصميم شما را براي فراگيري PHP قاطع تر کنم!
3- ساخت صفحات وب :
يک صفحه PHP ميتواند شبيه کد زير باشد :
<html>
<head><title>My First PHP Script</title></head>
<body>
<h1>My First PHP Script</h1>
<p>
Welcome, Internet user from IP address
<?echo $REMOTE_ADDR?>. Hope you like my first
PHP page.
</body>
</html>
توجه کنيد که اين دقيقا شبيه source صفحات وب مي باشد مگر در موارد که دستورات PHP را شامل مي شوند. اين کد آدرس IP بيننده صفحه را مينويسد ، براي همين از دستور echo استفاده کرده ايم . متغير محيطي وب سرور (environment variable) REMOTE_ADDR به صورت اتوماتيک با متغيري به همين نام در PHP شناخته ميشود (مانند ديگر متغيرهاي محيطي وب سرور). از اينرو نوشتن چنين اسکريپتهايي بسيار آسان و لذت بخش خواهد بود!
4- اشکال زدايي PHP در مقايسه با Perl CGI
اگر شما اسکريپتهاي نوشته شده را به صورت آنلاين آزمايش و اشکال زدايي ميکنيد PHP واقعا در اين زمينه مي درخشد!
هنگامي که اشکالي در يک اسکريپت Perl پيدا شود شما يک پيغام رمزگونه و نامفهوم (چيزي شبيه "500 Internal Server Error") دريافت ميکنيد.
اما وقتي که اسکريپت هاي PHP خود را به صورت آنلاين آزمايش ميکنيد ، هنگام مواجه شدن با اشکال پيغام خطا را با اشاره دقيق به شماره خط داراي اشکال ميدهد و اين براي اشکال زدايي خيلي کار ما را راحت ميکند ، هر چند پيغام خطا گاهي اوقات کلي و نامفهوم است مانند "parse error".
ولي در Perl پيغام خطاي "Internal Server Error" مي تواند از هر چيزي ناشي شود ، از اشتباه در syntax گرفته تا جا انداختن يک حرف يا upload کردن فايل در غير text mode .
اما اشکال زدايي به صورت آفلاين کاملا برعکس مي باشد.
بيشتر برنامه نويسان اعتقاد دارند که مفسر Perl هنگام مواجه شدن با خطا پيغام بهتر و مفيد تري ميدهد تا مفسر PHP که مثلا براي بسياري از خطاها پيغام کلي parse error را ميدهد که اين امر هم با توجه به انتشار نسخه هاي جديدتر PHP ميتواند برطرف شود.
نظرت یادت نره ما منتظر نظات گرم شما عزیزان هستیم؟؟