Boplo.ir
rss


جستجو

مطالب همینجوری

 

 

بر و بچ

MyView Tween


دوستشون دارم


بیلبورد

دامین برای فروش: CleanCode.ir
FastFeed.ir
Fonvi.com

تماس


انواع و اقسام سفارشات طراحی و برنامه نویسی سایت پذیرفته میشه. از سایت حمایت از خرگوشهای صورتی گرفته تا سایت قاچاق اعضای بدن!
تماس

 

از بيماران سرطاني حمايت كنيم

A new begining
AHHP presents

 

دسترسی به موقعیت و Path فایل در PHP
11 شهریور 1389 ساعت 10:33

نحوه پیدا کردن Path و Url اسکریپت

برای ساختن کدهای انعطاف پذیر، باید مسیر فایلها رو داینامیک تعیین کنیم که همه جا کار کنه.
چند خط کد زیر اطلاعات خوبی از موقعیت فایل رو میدهند ولی تضمینی بر اینکه همه جا کار کنند نیست! در حالت کلی تقریبا همه جا صحیح کار می کنه.

$baseurl = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['SCRIPT_NAME']).'/';
$basepath = str_replace('\\','/',dirname(__FILE__)).'/';
define('BASE_RELATIVE_URL',dirname($_SERVER['SCRIPT_NAME']).'/');
define('BASE_URL', $baseurl);
define('BASE_PATH', $basepath);


echo 'Base Relative Url: ' . BASE_RELATIVE_URL;
echo 'Base Url: ' . BASE_URL;
echo 'Base Path: ' . BASE_PATH;

برای نمونه، این کد رو در فایلی در Localhost با آدرس زیر قرار میدیم:
F:/Wamp/www/parent/child/test.php
همونجور که واضحه، URL این فایل به این شکل خواهد بود:
http://localhost/parent/child/test.php
در این حالت، خروجی کد بالا به این شکل خواهد بود:

/*
Base Relative Url: /parent/child/
Base Url: http://localhost/parent/child/
Base Path: F:/Wamp/www/parent/child/
*/

برچسب ها:

 

آیا Application من خوب نوشته شده؟
07 شهریور 1389 ساعت 11:10

چند معیار ساده برای اطمینان از قوی و حرفه ای بودن Application

از اونجایی که برنامه نویسی انتها نداره و هیچکس درش کامل نیست، وقتی برنامه ای میسازیم واسمون سوال پیش میاد که آیا این Application به روش خوبی نوشته شده؟ آیا مشکل ساختاری نداره؟
نکنه روش من با روش استاندارد و معیار کاملا متفاوت باشه یا براحتی هک بشه!

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

  • دوم. مشکل ساختاری اساسی و معضل امنیتی نداشته باشه.
    باید همیشه به روز باشیم یا با شیوه های نوین آشنا باشیم (در حد توان) ولی در حالت کلی باید ساختار رو کامل تحلیل کنیم و اشکالاتش رو کشف کنیم.
    مثلا یک سیستم مدیریت کاربر نوشتیم که کاربر میتونه هر کاراکتری رو به عنوان نام کاربری انتخاب کنه. وقتی چنین قابلیتی رو داریم تعریف می کنیم باید فکر این رو هم بکنیم یه نفر چنین Usernameای رو انتخاب کنه: "          " یعنی 10 تا Space و این ناجوره! باید چنین مواردی رو کشف کنیم و راه کشفش هم تحلیل سیستمه.

  • سوم. توسط نویسنده اش قابل فهم و توسعه باشه.
    کدی که خود من (نویسنده اش) امروز یا چند وقت دیگه ازش سر در نمیارم، به درد سطل آشغال میخوره! یا اگه ازش سر دربیارم ولی نتونم توسعه اش بدم هم همون وضعیت رو داره.

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

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

برچسب ها:

 

گرفتن مقدار فیلدهای Enum و Set در MySQL
23 تير 1389 ساعت 11:58

بیرون کشیدن لیست Enum و Set از دیتابیس

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

CREATE TABLE boplo_categories (
	`id` INT(10) AUTO_INCREMENT PRIMARY_KEY,
	`categories` ENUM('PHP', 'Web Design', 'MODx', 'IT', 'Scratch'),
	`tags` SET('Solution', 'API', 'AJAX', 'CSS', 'Javascript')
)

در این جدول، ستون categories که از نوع ENUM تعیین شده، حتما با یکی از مقادیر مشخص شده می تونه پر بشه.
و ستون tags که از نوع SET ایجاد شده مانند ENUM عمل می کنه با این تفاوت که در این ستون میشه بیشتر از یکی از موارد لیست رو ثبت کرد مثلا هم CSS و هم Solution ولی ENUM فقط یک مقدار میتونه داشته باشه.

کار با ENUM و SET خیلی لذتبخشه غیر از موقعی که بخوایم لیستی که در ENUM یا SET مشخص شده رو در برنامه امون داشته باشیم. معمولترین کاردبردش ساختن <SELECT> براساس مقادیر مشخص شده است. برای اینکار باید ابتدا لیست مقادیری که بصورت ENUM یا SET مشخص شده رو توسط یک کوئری بدست بیاریم و سپس کلمات لیست رو از این مقدار خارج کنیم. در ادامه پست میخوایم لیست کلمات مشخص شده برای ستون categories که بالا قرار دادم رو بدست بیاریم.

برچسب ها: ,,

 

نوشتن ایمیلهای راست به چپ در Yahoo Mail ، Gmail و Live Mail
13 تير 1389 ساعت 06:14

ارسال ایمیلهای فارسی و خوانا

میخوایم بدون درد و خونریزی، ایمیل فارسی بصورت راست به چپ بفرستیم...

Gmail: جی-میل امکانی داره تا دکمه های Right to Left و Left to Right رو به Editor اش اضافه کنیم.ابتدا به بخش Setting میریم. در اونجا در بخش General (همون اولی)، به قسمت اول یعنی Language مراجعه می کنیم و روی دکمه Show all language options کلیک می کنیم (مرحله یک در تصویر). همون لحظه عباراتی به این قسمت اضافه میشه. کافیه گزینه Right-to-left editing support on رو انتخاب کنیم(مرحله دو در تصویر) و تغییرات رو ذخیره کنیم. حالا موقع نگارش یک ایمیل، دو دکمه جدید به Toolbar ادیتور اضافه شده(مرحله سه در تصویر).
RTL Gmail

روش دوم، راست به چپ کردن از طریق کیبورد هست. در کیبورد من این کار با دکمه های Shift+Ctrl سمت راست انجام میشه (و با Shift+Ctrl سمت چپ کیبورد، چپ به راست میشه). یعنی وقتی روی بخش قابل تایپ ایمیل کلیک کنیم و این دکمه ها رو بزنیم، Cursor به سمت راست میاد و میتونیم راست به چپ بنویسیم. جیمیل این حالت رو حفظ می کنه و وقتی ایمیل رو فرستادیم، گیرنده هم همونجور مشاهده خواهد کرد. این اتفاق بخاطر هوشمندی ادیتور جیمیل هست.


Yahoo Mail: یاهو مثل گوگل فهمیده نیست و چنین قابلیتی رو پیش بینی نکرده ولی با روش دومی که برای جیمیل معرفی کردم، میشه در یاهو هم راست به چپ ایمیل نوشت. یعنی تغییر جهت نگارش با دکمه های Shift+Ctrl سمت راست و سمت چپ کیبورد.


Live Mail: لایو دیگه ته بی شعوره! هیچ راه درست و درمونی نداره به غیر از اینکه این سرویس امکان نگارش ایمیل بصورت HTML رو فراهم می کنه (که قابلیت منحصر به فرد و جالبیه) که اگر HTML بلد باشیم، می تونیم ایمیل RTL با لایو بنویسیم و ارسال کنیم.
اگر هیچی از HTML نمی دونی و لنگ فرستادن ایمیل راستچین با لایو هستی. تا همین حد میشه کمک کرد:
وقتی ایمیل رو براساس تصویر HTML کردی. ایمیل رو با این کد شروع کن:

<div dir="rtl" style="font-family:Tahoma">
و با این تموم کن:
</div>
و برای ایجاد خط جدید، بجای Enter تگ زیر رو قرار بده:
<br />
نمونه:
<div dir="rtl" style="font-family:Tahoma">
سلام<br />من یک ایمیل راستچین در لایو هستم.
</div>
RTL Live Mail


پی نوشت:
کیبورد مکینتاش، اونجوری که تست کردم با دکمه های Command+Shif+} راستچین میشه.

برچسب ها: ,

 

روش ایجاد پست بصورت راست به چپ در انجمن MODx
11 تير 1389 ساعت 06:12

صاف و صوف پست بدیم و کج و کوله نبینیم

توی انجمن مادایکس نوشتن پستهای فارسی کلی دردسر داره. باید از تگ [right] استفاده کنیم و چون ادیتور RTL نیست باید کلمات غیرفارسی رو خط جدید قرار بدیم و خلاصه یه کثافتکاری ای میشه که نیا و نبین!

دیروز خیلی اتفاقی (در واقع شانسی)، تگ [rtl] رو توی فروم تست کردم و خشوبختانه کار کرد و عبارات داخلش رو بصورت RTL نمایش داد. اینجا بود که با خودم گفتم ای کاش این همه مدت بجای پستهای فضایی، یه سری به سایت SMF زده بودم این قابلیت رو اونجا دیده بودم!

نکته دوم اینکه برای نوشتن پستهای فارسی قابل خواندن، این تگ کافی نیست و باید جهت کل متن رو توسط تگ [right] به سمت راست ببریم و برای تکمیل کار هم، فونت نوشته ها رو توسط تگ [font] به شکل [font=Tahoma] به Tahoma تغییر بدیم.
در نهایت باید این سه تگ رو با هم استفاده کنیم:

[rtl][right][font=Tahoma]
من یک پست خیلی خوب و گوگولی تشریف دارم که راست چین و باحال هستم
[/font][/right][/rtl]

یک نکته اینکه تگ [code] این تگها رو قطع می کنه یعنی وقتی میخوایم از تگ [code] استفاده کنیم باید تگهای مربوط به راستچین رو قبل از تگ [code] ببندیم و بعد از تگ [code] مجددا باز کنیم. شبیه این:

[rtl][right][font=Tahoma]
من یک پست خیلی خوب و گوگولی تشریف دارم که راست چین و باحال هستم
[/font][/right][/rtl]
[code]It's a code![/code]
[rtl][right][font=Tahoma]
من ادامه همون پست بالایی هستم و از اون کلی باحالترم
[/font][/right][/rtl]

یک نکته ریزه میزه: توی هر فیلدی، اگر در محیط ویندوز و درصورت نصب بودن زبان فارسی، کلیدهای Shift+Ctrl سمت راست کیبورد رو بزنیم، اون فیلد راست چین میشه و بای زدن همین دکمه در سمت چپ کیبورد به چپ به راست تغییر می کنه.
برای ما که فارسی مینویسیم راحتتره که این کار رو بکنیم تا توی نوشته های فارسی-انگلیسی خوانایی بهتری داشته باشیم. این نکته برای ادیتور انجمن مادایکس هم صدق می کنه.


پی نوشت: من این ترفند رو در انجمن مادایکس و تاپیک زیر هم قرار دادم:
روش نگارش پستها در انجمن بصورت راست به چپ

 

باشد که وب تمیزتری داشته باشیــــــــــــــم!

برچسب ها: ,

 

باز شدن خودکار لینکهای خارجی در پنجره جدید توسط JavaScript
02 تير 1389 ساعت 11:00

تابع JavaScript برای کنترل لینکهای External

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

var hostname = window.location.hostname;
var anchors = document.getElementsByTagName("a");
for(var i=0; i<anchors.length; i++) {
	if(	anchors[i].href
		&& anchors[i].href.indexOf(hostname) == -1
		&& !anchors[i].target
	) {
		anchors[i].target = "_blank";
	}
}

از اونجایی که کار نصفه و نیمه جواب نمیده و چون این وبلاگ بخش MooTools و jQuery هم داره. این کد رو با این دو فریم ورک هم می نویسم محض نمونه و مثال از این فریم ورکها:
انتخابگر هر دوشون مثل هم هست و به شکل زیره:

var hostname = window.location.hostname;
var selector = 'a[href]:not([href*='+hostname+']):not([target]';

  • MooTools:
    $$(selector).set('target', '_blank');
  • jQuery:
    $(selector).attr('target', '_blank');

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

برچسب ها: ,

 

روش بکارگیری Timestamp در PHP و MySQL و JavaScript
30 خرداد 1389 ساعت 01:44

کنترل و بدست گیری مقادیر زمان بین زبانهای برنامه نویسی

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

Timestamp ثانیه های طی شده از 00:00 1970/01/01 تا الانه. همونجوری که واضحه، زمان به این شکل، یک عدد صحیح خواهد بود و مهمترین خاصیتش سهولت نگهداری و مقایسه است.

زمان در PHP بر پایه Timestamp تعریف شده ولی در MySQL و JavaScript چنین نیست و معمولا برای هماهنگی این سه زبان، مجبوریم کدهای اضافی داشته باشیم درحالیکه هر سه این زبانها، امکاناتی برای کار با Timestamp بر پایه Unix دارند.

    در زیر یک مثال در هر کدوم از این زبانها قرار گرفته:
  • PHP:
    $timestamp = time();
    $date = date('Y F d', $timestamp);
  • MySQL:
    timestamp = UNIX_TIMESTAMP()
    date = FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x')
  • JavaScript:
    var timestamp = parseInt(new Date().getTime()/1000);
    var date = new Date(new Date().getTime()).getDay();

برچسب ها: ,,,

 

HTML TABLE، خوب یا بد؟
19 خرداد 1389 ساعت 01:27

طراحی Tableless چیست؟

شاید توی طراحی قالب، به عبارت Tableless (به معنای "بدون جدول") برخورده باشی یا شنیده باشی که میگن توی طراحی از از جدول کمتر استفاده کنیم.
میخوام توضیح بدم که چرا نباید زیاد از جدول استفاده کنیم یا چرا طراحهای قالب به Tableless بودن قالبهاشون می نازند.

اول از محاسن Table میگم، بعد از معایبش و مقایسه اش با مدل CSS و در آخر یک جدول رو یکبار با تگ TABLE و یکبار توسط CSS خواهی دید. باید و نبایدهای HTMLTABLE

برچسب ها: ,

 

Delegation با اسب سفید
16 اسفند 1388 ساعت 11:53

توابع Delegation در فریم ورکهای MooTools و jQuery

همونطور که مستحضریم، جاوااسکریپت امکان تعیین Event رو به هر Element از صفحه میده که مثلا اگر فلان Element کلیک شد این اتفاقا بیافته و اگر یکی دیگه mouseover شد اون یکی اتفاقا بیفته و غیره. تعیین این Eventها از طریق Frameworkها مثل MooTools و jQuery عجیب آدم رو یاد هلو میندازه. مخصوصا که امکان تعریف Evnet های اختصاصی رو هم میدن مثل OnLoveBoplo، OnVisitBoplo و غیره.

این فریم ورکها، امکانی برای اجرای کد در زمان تکمیل DOM رو دارند که در MooTools رویداد domReady و در jQuery متد ()ready. که به ما امکان قرار دادن کدها رو در <head> صفحه میدن و خیلی کاربرد دارند. مثل کدهای زیر که وقتی هر لینکی کلیک شد، یه alert ناقابل نمایش میده:

// MooTools
window.addEvent('domready', function(){
	$$('a').addEvent('click', function() {
		alert("You've clicked " + this.href + "!");
	});
});

// jQuery
$(document).ready(function(){
	$('a').click(function() {
		alert("You've clicked " + $(this).attr('href') + "!");
	});
});

همونطور که گفتم این کد در زمان تکمیل DOM یکبار انجام میشه و Eventها رو تنظیم می کنه. همه چی آرومه و من خیلی خوشحالم تا اینکه یه جایی یک لینک توسط جاوااسکریپت ساخته میشه یا توسط Ajax به صفحه اضافه میشه و کاملا منطقی خواهد بود که چون موقع اجرای کدهای بالا اون لینک وجود نداشته، Eventاش هم Set نشده و کدهاش هم اجرا نخواهد شد. برای حل این مشکل سه راه وجود داره ....
برای اینکه بفهمی Delegation چیه، چرا خوبه و چطور عمل می کنه، ادامه مطلب رو بخون....

برچسب ها: ,,,

 

تبدیل تاریخ مورد نظر به فرمت چند وقت پیش
21 بهمن 1388 ساعت 01:08

شیوه نامتعارفی برای نمایش زمان

یه روش نمایش زمان، مدل چند وقت پیشه که مثلا بجای فلان زمان بنویسیم: 23 روز و 19 ساعت و 45 دقیقه پیش.

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

نمونه:

$time = time() - 15*60;
echo getPastTime($time);
خروجی این خواهد بود: 15 دقیقه پیش

/**
 * getPastTime : Get Past Time in String
 * 
 * 
 * Author : AHHP(Amir Hossein Hodjaty Pour) ~ Boplo@Boplo.ir
 * License : GPL
 * Version : 1
 * Created on : 1388/11/20     11:55 pm
 * 
 * @param integer $time Unix Timestamp to parse
 * @param bool $year Set to FALSE to remove Year from output. optional default to TRUE.
 * @param bool $month Set to FALSE to remove Month from output. optional default to TRUE.
 * @param bool $day Set to FALSE to remove Day from output. optional default to TRUE.
 * @param bool $hour Set to FALSE to remove Hour from output. optional default to TRUE.
 * @param bool $minute Set to FALSE to remove Minute from output. optional default to TRUE.
 * @param bool $second Set to TRUE to remove Second from output. optional default to FALSE.
 * @return string Formatted string
 */

function getPastTime($time, $year=true, $month=true, $day=true, $hour=true, $minute=true, $second=false) { }

Download getPastTime.function.zip

برچسب ها: ,,

 

< قبلیبعدی >

12

 

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

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

به خونه امیرحسین خوش اومدی...

MODx | Template World