بایگانی برای ‘توسعه‌ی وب’ دسته

API جدید گوگل برای رسم نمودار

یکشنبه, 23 دی 1386

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

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

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

البته راهکارهای دیگه ای هم برای تولید نمودار هست. مثلا استفاده از jpgraph که یکسری مجموعه کلاس به زبان php هست که رایگان هم هست.
یک راه حل مقرون به صرفه دیگه هم استفاده از فلش هست (مثل fusioncharts). عیبش اینه که همه فلش ندارند.
بهترین راه هم استفاده از canvas هست. که مشکلش اینه که IE ساپورتش نمیکنه. البته این مشکل هم با explorercanvas قابل حله. برای مثال plotkit و یا ejschart از canvas برای رسم نمودار استفاده میکنند.

HTML5 و Comet

یکشنبه, 23 دی 1386

امروزه تکنولوژی های قدیمی وب دیگر پاسخگوی نیازهای جدید application های تحت وب نیست. البته با استفاده از ajax بخشی از این نیازها برآورده شده. اما بزرگترین محدودیت برای application های تحت وب عدم امکان دریافت event از سرور هست که برای رفع این مشکل از روش comet استفاده میشه. comet در واقع یک جور «هک» محسوب میشه (منظور از هک در اینجا، استفاده از امکانات موجود برای رفع مشکلاتیست که راهکاری از قبل برایش اندیشیده نشده. یا به عبارتی هک یکجور راه حل سرخ پوستی برای مشکلات جدیده.). و comet هم در واقع یک راه حل سرخ پوستی برای حل مشکل دریافت event از سرور هست. راه حل های سرخ پوستی(هک ها) معمولا مشکلات خاص خودشون رو دارند چون در واقع می‌خواهیم کاری رو انجام بدیم که استاندارد و پروتکلی از قبل برایش تعریف نشده و مرورگر برای اون کار بهینه نشده.

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

در حال حاضر فقط opera از این تکنولوژی جدید پشتیبانی میکنه، البته نه به طور کامل. جالبه که بدونید پشتیبانی اولیه opera از این تکنولوژی از opera 8.5 شروع شده. اگر این تکنولوژی تصویب بشه در آینده نزدیک در firefox3 هم ازش بهره مند خواهیم بود. و اگر عمری باشه و خدا بخواد حدود چند ده سال بعد هم در IE پشتیبانی میشه.
آپدیت : همونطور که آقای کرمعلی زاده گفتند بهینه بودن سرور برای پشتیبانی از این تکنولوژی هم از اهمیت زیادی برخورداره. اما دغدغه اصلی شرکت های بزرگ نیست. چون این شرکت ها مشکل اصلیشون مرورگره و برای سمت سرور از هر چیزی که خودشون بخواهند میتونن استفاده کنند. به عنوان مثال jetty یک وبسرور هست که برای این تکنولوژی بهینه شده. ولی برای اینکه هر کسی بتونه از این تکنولوژی استفاده کنه باید منتظر بهینه شدن apache بمونیم.

منبع: Comet Daily

Opera Developer Tools

شنبه, 22 دی 1386

قبلا ابزارهایی برای توسعه وب برای فایرفاکس و IE معرفی کرده بودم (Firebug و IEDevToolbar). گفتم ابزارهای توسعه وب برای opera رو هم معرفی کنم تا این مجموعه کامل بشه. والبته بهانه ای بشه برای آپدیت کردن وبلاگ.

البته این ابزار نه widget محسوب میشه و نه toolbar بلکه فقط یک فایل جاوا اسکریپت هست که روی هر صفحه ای که بخواهید اجرا میشه و یک پنجره popup باز میکنه که امکاناتی مشابه firebug رو فراهم میکنه. البته به کاملی فایرباگ نیست ولی از IEDevToolbar خیلی کاملتره.

این هم آدرسش :
http://dev.opera.com/tools

IDE تحت وب

شنبه, 5 آبان 1386

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

rainbow9.org یک IDE تحت وب برای html ، جاوا اسکریپت ، CSS و xml و … هست که امکاناتی نظیر autocomplete و اجرا داره.

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

شناسایی مرورگر بدون استفاده از JavaScript/CSS

جمعه, 13 مهر 1386

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

امروز روش جالب، نامتعارف و البته غیرکاربردیی در اینترنت یافتم که این کار رو بدون استفاده از JavaScript و یا CSS و فقط با استفاده از HTML انجام میده در واقع در این روش از تفاوت های رفتاری و یا باگ های مرورگرها در برخورد با صفت src استفاده شده.

این هم لینکش:

http://wafful.org/2007/10/01/html-20-browser-detection-3

این هم لینک مثال:

http://wafful.org/~takesako/html20hacks/browser-detect3.html

استفاده از فایرفاکس با پروفایل های مختلف

چهارشنبه, 11 مهر 1386

یکی از قابلیت های فایرفاکس امکان تعریف چند پروفایل برای یک کاربر است.
وقتی شما فایرفاکس را نصب می‌کنید به طور پیش فرض برای هر کاربر یک پروفایل هم ایجاد میشود. فایرفاکس کلیه تنظمیات، bookmark ها، cookie ها، history ، cache و extension های شما را در پروفایل شما ذخیره می‌کند.

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

  • امکان استفاده از پروفایل های مختلف برای مقاصد مختلف (مثلا تعریف یک پروفایل برای توسعه‌ی وب)
  • امکان لاگین کردن در یک سایت با ID های مختلف (برای مثال لاگین کردن همزمان در دو اکانت Gmail)
  • امکان استفاده از چند proxy به طور همزمان. (من از این امکان برای استفاده همزمان از دو کانکشن ADSL تو شرکت استفاده میکنم.)

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

(دنباله…)

استفاده از gzip برای افزایش سرعت سایت

سه شنبه, 3 مهر 1386

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

یکی از راهکارهای افزایش سرعت لود شدن سایت استفاده از فشرده سازی gzip هست که میتونه 60 الی 80 درصد حجم صفحات رو کاهش بده. البته استفاده ناصحیح از gzip میتونه باعث بروز مشکلات و یا حتی کند شدن سایت بشه. چگونگی استفاده موثر از این راهکار موضوعیست که در ادامه این بحث به اون خواهیم پرداخت.

(دنباله…)

سازگار کردن کد با ورژن های جدید php

چهارشنبه, 28 شهریور 1386

هر بار با بروز رسانی php ممکنه تغییرات جدیدی در php ایجاد بشه که برای برنامه نویس ها درد سر ساز بشه. البته معمولا این دردسر ها زیاد جدی نیستند و با تغییر مختصری در کد مشکل حل میشه. ولی share کردن تجربیات در این زمینه میتونه پیدا کردن و رفع مشکلات رو راحت تر کنه.

عمده ترین مشکل در بروز رسانی از نسخه 4 به 5 تداخل شناسه های برنامه شما با شناسه ها و یا کلمات کلیدی جدید در php5 هست که با تغییر نام دادن اون شناسه مشکل حل میشه. برای مثال تداخل نام کلاس soapclient در nusoap با کلاس soapclient در php5.
بهترین راه برای پیشگیری از وقوع اینگونه تداخل ها استفاده از namespace در نام گذاری کلاس ها و توابع است. یعنی از انتخاب نام های عمومی برای شناسه ها خودداری کنید و مثلا حروف اختصاری نام خودتون یا شرکتتون رو به عنوان پیشوند یا پسوند در نام گذاری شناسه استفاده کنید. مثلا بهتر بود که به جای نام soapclient از نام nu_soapclient استفاده میشد.

و اما مشکل دیگه ای که من برخورد داشتم این بود که در php5 در حالت CLI (خط دستور) دایرکتوری جاری با مسیر فایل php یکسان نیست و اگر بخواهید فایلی رو include کنید و یا با فایل ها کار کنید باید حتما قبلش chdir کنید به مسیر مورد نظر. جالب اینجاست که این تغییر در php5.2.4 مجددا به حالت قبل برگشته است.

مشکل دیگه ای هم که من بعد از بروز کردن به php 5.2 داشتم و ساعت ها وقت من رو گرفت این بود که در صورت استفاده از ob_start با callback چنانچه output buffering بدون استفاده از توابع مربوطه خاتمه یابد درون تابع callback نمیتوان از یک آبجکت که قبلا تعریف شده استفاده کرد.
این مشکل بیشتر شبیه به یک باگ هست تا تغییر ورژن. لذا من بعد از کلی کلنجار رفتن با این مشکل به قسمت گزارش باگ در سایت php رفتم و با یک سرچ متوجه شدم که این مشکل ناشی از اینه که در ورژن جدید بعد از خاتمه کد اول آبجکت ها destroy میشن بعد بافر خالی میشه. پس برای رفع این مشکل تنها راه اینه که قبل از خاتمه برنامه خودمون بافر رو خالی کنیم. برای اطلاعات بیشتر در مورد این مشکل اینجا رو کلیک کنید.

و اما مشکلی که در آخرین بروز رسانی به php 5.2.4 پیش اومد. اینکه در حالت CLI عنصر SCRIPT_FILENAME از آرایه سراسری $_SERVER مقدار نداره. (در مورد سایر عناصر تست نکردم شاید اونها هم تغییر کرده باشه)
و اما تغییر دیگه ای که تو این نسخه بود و قبلا بهش اشاره کردم اینکه در حالت CLI دایرکتوری جاری مجددا در این ورژن با مسیر فایل php یکسان شده.

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

معمولا خود سایت php برای تغییرات در نسخه های ماژور، سرفصلی در php manual باز میکنه. که موارد زیر از آن جمله اند:

http://www.php.net/manual/en/faq.migration5.php
http://www.php.net/manual/en/migration5.php
http://www.php.net/manual/en/migration51.php
http://www.php.net/manual/en/migration52.php

برای نسخه های مینور هم میتونید به ChangeLog مراجعه کنید.

Open Komodo

پنجشنبه, 22 شهریور 1386

به تازگی شرکت Active State از راه اندازی پروژه Open Komodo خبر داده است که یک بستر Open Source برای توسعه سایر IDE ها خواهد بود. چیزی شبیه به Eclipse با این تفاوت که Eclipse با جاوا نوشته شده و این پروژه بر بستر Mozilla توسعه یافته است. از مزایای توسعه بر بستر Mozilla می توان به Cross Platform بودن و توسعه پذیر بودن آن اشاره کرد. گفتنی است Active State قصد دارد سایر محصولات خود از جمله Komodo IDE و Komodo Edit را بر روی بستر Open Komodo توسعه دهد.

Komodo Edit ادیتوری قدرتمند و رایگان است که از اکثر تکنولوژی های وب از جمله php و javascript و HTML و XML به خوبی پشتیبانی میکند. و با توجه به اینکه بر بستر Mozilla توسعه یافته، مشابه FireFox قابل توسعه توسط Extention های xpi می باشد.

احتمالا Open Komodo اوایل نوامبر در دسترس خواهد بود.

صفحه ای بدون حتی یک خط کد HTML

سه شنبه, 20 شهریور 1386

امروز میخوام یک معما طرح کنم.

آدرس زیر رو نگاه کنید و سعی کنید کد HTML صفحه رو بدست بیارید. (برای دیدن صفحه از Firefox یا Opera استفاده کنید.)

http://farhadi.ir/test/nohtml.php

منتظر نظرات هستم …

آپدیت :
معما حل شد.
تمام آنچه در این صفحه دیده میشه با استفاده از CSS تولید شده و از قابلیت لینک کردن فایل CSS به صفحه از طریق Header استفاده شده. که البته در IE کار نمیکنه.
در کل با این روش نمیشه یه صفحه کامل طراحی کرد چون با CSS نمیشه کد HTML تولید کرد. مگر اینکه از حقه قدیمی قرار دادن کد javascript در CSS استفاده کنید که اون هم فقط در IE و نسخه های قدیم opera کار میکنه. نتیجه اینکه این روش شاید کاربردی نباشه ولی برای سرکار گذشتن خوبه! ;)