Java & Ms access
فروردین ۱۲م, ۱۳۸۸
احیانا” اگه سر مورد زیر بیچاره شدین (مثل خود من) این میتونه راه حل باشه:
وقتی که بخواین با جاوا به Ms Access کانکت بشین و فارسی کار کنین!
در واقع مشکل فارسی جاوا و اکسس بصورت زیر قابل حل هست:
Properties prop = new Properties();
prop.put("charSet", "UTF8");
connection = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=src\\database.mdb", prop);
به همین سادگی
Tags: connection, database, farsi problem, Java, ms access, utf-8, اکسس, جاوا, مشکل فارسی
Posted in Java | Comments (۱)
اسفند ۱۵م, ۱۳۸۷
الان که دارم با توییتر کار میکنم ( http://twitter.com/mousavian ) تازه علت بوجود آمدن سایت هایی که لینک رو کوچک میکنن (مثل http://bit.ly ) و سایت هایی رو که هرچند تا لینک رو به یک لینک تبدیل میکنن میفهمم! بالاخره ۱۴۰ کاراکتر که بیشتر نمیشه بنویسی !!!
Tags: rahman mousavian, twitter, توییتر, کوچک کردن لینک
Posted in مرتبط با وب 2 | Comments (۰)
Operation Aborted
اسفند ۲م, ۱۳۸۷
درحال نوشتن یک کد برای یک سایت بودم که یکهو دیگه توی ie بالا نیومد! و خطای:
Interne Explorer can not open the Internet site http://sitename.com.
Operation aborted!
و بعد هم خطای The page cannot be displayed روی صفحه اومد!
اگر میخواهید که این خطا رو ببینید همین چند خط کد ساده رو در ie اجرا کنید.
<table border="0">
<tbody>
<tr>
<td><script type="text/javascript"><!--
var oDiv = document.createElement("DIV");
document.body.appendChild(oDiv);
// --></script></td>
</tr>
</tbody></table>
راه حل این مشکل اینه که تگ اسکریپت (script) و محتویات آن را بعد از بسته شدن تگ جدول (table) بگذارید.
واقعا” مسخره ست! نه؟
اگه درحال کار با اینترنت اکسپلورر هستید باید در مرورگر خود تجدید نظر کنید!
Tags: appendChild, javascript, Operation Aborted
Posted in Damn ie, Mozilla FireFox, javascript | Comments (۱)
getElementsByClassName
بهمن ۲۷م, ۱۳۸۷
تاحالا شده بخواهید یکی از elementهای DOM رو از طریق نام کلاس آن انتخاب کنید؟! البته این کار درصورتی که از یکی از کتابخانه های جاوا اسکریپت مثل jQuery استفاده میکنید خیلی راحت خواهد بود.
اما باید بدونید که در فایرفاکس هم ( که من پیشنهادش میکنم! ) یک تابعی تعریف شده که عینا” همین کار رو انجام میده.
( document.getElementsByClassName(”targetClass”) ) و بعد از فراخوانی آرایه ای از element هایی رو که دارای کلاس targetClass برمیگردونه!
اما طبق معمول برای ie و همچنین opera هنوز این تابع وچود ندارد که در زیر آنرا بطور دستی اضافه میکنیم:
document.getElementsByClassName = function(class_name) {
var docList = this.all || this.getElementsByTagName('*');
var matchArray = new Array();
var re = new RegExp("(?:^|\\s)"+class_name+"(?:\\s|$)");
for (var i=0, n=docList.length; i<n; i++) {
if (re.test(docList[i].className) ) {
matchArray.push(docList[i]);
}
}
return matchArray;
}
متغیر doList شامل تمام elementهای داخل DOM هست. درصورتی که all برای Document تعریف شده باشد (در فایرفاکس تعریف نشده است) all و در غیر اینصورت توسط تابع getElementsByTagName انتخاب شده و در docList قرار میگیرد.
حالا یک سوال پیش میاد و اون اینکه چرا all اول نوشته شده با اینکه تابع getElementsByTagName در هر سه مرورگر شناخته شده است؟! جواب اینه که در موارد خاصی تعداد element های select شده در این دو مورد فرق داره و البته که all کامل تره.(در Opera)
درباره عبارت منظم استفاده شده هم این رو بگم که قسمت اول یعنی (?:^|\\s)
از اول رشته ی نام کلاس یا از اولین کلمه بعد از فاصله رو تست میکنه و قسمت دوم هم تا فاصله یا تا آخر رشته رو تست میکنه.
در ضمن استفاده از ?: در این عبارت ها هم ضرورتی نداره اما باعث میشه که سرعت تست کردن این عبارات بالا بره (به عبارات منظمی که شامل “?:” باشه “Non-capturing groups” گفته میشه چون وقت صرف ساختن backreferenceها نمیشه)
فکر نکنم نکته خاص دیگه ای داشته باشه!
فعلا”
Tags: Damn ie, ff, firefox, getElementsByClassName, internet explorer, javascript, js, opera, regular expression, اینترنت اکسپلورر, جاوا اسکریپت, عبارات منظم, فایرفاکس
Posted in Damn ie, Mozilla FireFox, javascript | Comments (۰)
راه اندازی Ruby On Rails در ویندوز
بهمن ۲۴م, ۱۳۸۷
۱/ برای راه اندازی (Configure) زبان روبی ابتدا فایل مربوط به آن را از “اینجا” دانلود کنید و نصب نمایید!
۲/ بعد از نصب چک کنید که شاخه Ruby/bin به Path ویندوز اضافه شده باشه. (برای اینکار در محیط command تایپ کنید: path)
اگه اضافه نشده بود،بطر دستی اون رو اضافه کنید. برای این کار روی MyComputer راست کلیک کنید و Properties رو انتخاب کنید.
از تب Advanced دکمه Environment Variables رو کلیک کنید. در قسمت متغیرهای سیستم ( System variables) مسیر (Path) رو پیدا کنید و Edit رو بزنید.
حالا مقدار (Value) اون رو بصورت زیر تغییر بدین: در صورتی که آخرش سمی کالن (;) نداره، یکی اضافه کنید و بعد مسیر شاخه bin از روبی (از جایی که نصب کردین) رو به آخرش اضافه کنید. مانند زیر:
نمونه: “…Files\Adobe\AGL;D:\ruby\bin”
4. خب الان برای اینکه تست کنید تاحالا همه چیز درست پیش رفته در Command تایپ کنید:
ruby -v
پارامتر “v” ورزن (Version) روبی نصب شده را نمایش میده.
۵/ حالا برای نصب فریم ورک (FrameWork) آن یعنی Rails وارد محیط خط فرمان (Command) بشید و تایپ کنید:
gem install rails –-include-dependencies
که البته برای اینکه این فریم ورک نصب بشه شما باید به اینترنت متصل باشید.
(در صورتی که Error داد به احتمال زیاد ورژن GEM نصب شده پایینه! برای چک کردن ورژن gem تایپ کنید: gem -v
ورژن مورد نیاز برای نصب Rails ، باید حداقل “۰/۹/۴/” باشد. اگه نیاز به بروز کردن (update) کردن gem دارید، تایپ کنید:
gem update –system
)
اینجا مراحل نصب Ruby on Rails تمام شده اما خب ایجاد یک Application در روبی هم یکم قلق داره که توضیح میدم:
۱/ وارد شاخه ای بشوید که میخواهید پروژه خودتون رو آنجا ایجاد کنید(از طریق Command). جالبه بدونین که فرقی نمیکنه که کجای سیستم شما فایل هاتون رو میسازید چون سرور و کدهای خود رو همان جا تولید خواهید کرد. حالا تایپ کنید:
rails -d mysql appName
که “appName” نام پروژه شما خواهد بود. درواقع با این کار فریم ورک Rails بصورت خودکار تمام شاخه ها و قایل های پایه ای مورد نیاز شما را خواهد ساخت که شما لیست آن را در محیط خط فرمان خواهید دید.
با توجه به اینکه پایگاه داده پیش فرض روبی SQLite هست، برای اینکه Database خود را MySql انتخاب کنید، باید حتما” پارامتر mysql رو هم بفرستین تا خود Rails تنظیماتش رو انجام بده.
۲/ بعد از ساخته شدن پروژه درصورتی که نیاز به پایگاه داده دارید، فایل “appName/Config/database.yml” رو Edit کنید و نام پایگاه داد و نام کاربری و رمز عبور رو در قسمت تعیین شده بنویسید.
۳/ برای Run کردن سرور روبی هم وارد شاخه appName بشوید و تایپ کنید:
ruby script/server
توجه کنید که از این به بعد همه دستوراتتون رو از داخل همین شاخه اجرا کنید چون در غیر این صورت به خطاهایی مثل خطای زیر بر میخورید:
ruby: No such file or directory — script/server (LoadError)
و این خطا به این خاطر است که شما با اجرای دستور بالا آدرس فایل server را که در شاخه script هست، بعنوان پارامتر برای ruby ارسال میکنید.
کار راه اندازی تمام شده هست و شما روی پورت ۳۰۰۰ localhost یعنی http://localhost:3000 میتونید Ruby on Rails رو ببینید.
Tags: download, rails, ruby, ruby on rails, رابی, راه اندازی, ریلز
Posted in ruby on rails | Comments (۰)
تگهای script اضافی!
دی ۹م, ۱۳۸۷
چندوقت پیش John Resig نویسنده jQuery توی وبلاگش چیز جالبی نوشته بود که منم خودم به این مورد برخورده بودم. برای همین خیلی برام جالب و مفید بود. متن زیر خلاصه ای نوشته های John و کامنت های وبلاگش هست:
اگه دقت کرده باشین هنگامی که ما با استفاده از صفت منبع (source attribute) یک کد جاوا اسکریپت (javascript) رو به صفحه خودمون اضافه میکنیم، قادر نیستیم که کدهای دیگه ای رو در بدنه تگ بنویسیم. منظورم اینه:
<script src="some-lib.js"></script> <script> var foo = use_some_lib(); foo.do.stuff(); </script>
یعنی واقعا” چرا برای نوشتن ادامه کدها مجبوریم یک تگ دیگه باز کنیم وقتی کد زیر خیلی جذاب تر و تر و تمیز تره؟!
<script src="some-lib.js"> var foo = use_some_lib(); foo.do.stuff(); </script>
خب برای اینکه بتونیم این کار رو انجام بدیم، John دست به کار شده و دو خط کد نوشته!
اول اینکه تگ script مربوطه رو انتخاب میکنیم بعد هم محتویات آنها را با استفاده از دستور eval اجرا میکنیم! بهمین سادگی!
var scripts = document.getElementsByTagName("script");
eval( scripts[ scripts.length - 1 ].innerHTML );
خب کافیه که این کد رو به فایل منبع (src) اضافه کنید و حالشو ببرید.
اما خب شاید همین دو خط کافی نباشه. چرا؟ خب فرض کنید مثلا” شما چندتا فایل اسکریپت توی صفحه دارین که حالا یا بطور عادی نوشته شدن یا قراره بارگذاری (load) بشن.
حالا اگه کد شما وابسته به اونها باشه چی؟ بهرحال john پیشنهادهایی داده و کد خودش رو کامل کرده که من تکه کد نهایی رو توضیح میدم.
(function(){
var scripts = document.getElementsByTagName("script");
var curScript = scripts[ scripts.length - 1 ];
if ( curScript.executed )
return;
// ... jQuery ...
curScript.executed = true;
var script = curScript.innerHTML;
if ( script ) {
jQuery(document).ready(function(){
jQuery.globalEval( script );
});
}
})();
// if you don't use jQuery :
// if ( script )
// eval ( script );
اولین چیزی که توی این کد به چشم میخوره اینکه که ما چک میکنیم که کد قبلا” اجرا شده یا نه و دومین هم طبق چیزی که گفتم کد رو بعد از اینکه DOM آماده شد کد اجرا میکنیم.
حالا جذابیت نوشته های John یک طرف، کامنت هایی هم که گذاشته میشه حاوی نکات خیلی جالبیه!
مثلا یکی نوشته که چطوره اصلا” همه تک های script رو خلاصه کنیم و منابع اونهارو بصورت آرایه ای مثل مثال زیر بنویسیم !؟
<script src="myScript.js,myNextScript.js,myFinalScript.js"> var hello = "world"; </script>
یا حتی یکی کد زیر رو نوشته و کد خودش رو احمقانه خونده! درصورتی که من فکر نمی کنم نتیجه متفاوتی داشته باشه و احمقانه هم نیست! بالاخره برای خودش یک راهکاره!
<script src="..." onload="eval(innerHTML)"> //code <script>
Tags: html, javascript, jQuery, جاوا اسکریپت
Posted in jQuery, javascript | Comments (۱)
Firebug
دی ۶م, ۱۳۸۷
بعید میدونم که شما طراح و برنامه نویس وب باشین اما با Firebug آشنا نباشید. در واقع FireBug علاوه بر مزیت هایی که در کار با کدهای HTML و CSS داره دارای خط فرمان جاوا اسکریپت نیز هست. وجود خط فرمان javascript در firebug به شما این امکان رو میده که کدهای خودتون رو به صفحه جاری الصاق کنید. انگار که اونها از اول توی صفحه جاری نوشته شده بودند!!
شاید در نگاه اول این چیز خیلی جالبی نباشه اما وقتی یکم دقیق بشین متوجه میشین که چی میگم. بذارین یک مثال بزنم. اگه شما Ajax کار کرده باشید باید بدونید که آژاکس Cross-Domain نیست. یعنی اینکه شما نمیتونید درخواست (request) هایی رو از دامین های دیگه داشته باشین. (البته حالت های خاصی داره ازجمله JSON و CSSHTTPREQUEST) اما مهم اینه که در حالت معمولی چنین امکانی وجود ندارد. خب حالا به شما از طریق FireBug این امکان داده شده که وارد یک سایت بشید و کدهای جاوا اسکریپت خودتون و خصوصا” آژاکستون رو اجرا کنید. شاید بهتر باشه یک مثال بزنم. چند وقت پیش یکی از دوستام یک آدرسی به من داد که اجازه میداد sms رایگان بفرستین. بدون هیچ محدودیتی. البته من نیدونم اون صفحه شخصی بود یا هرچیز دیگه ای! مهم فارسی بودنش بود که خیلی تعجب برانگیزناک آلود بود!
خب بر طبق طبع من چندتا اس ام اس تست ارسال کردم و بعد از ایکه صحتش برام معلوم شد، جرقه ای در سرم زده شد! اومدم کد ساده ای مثل زیر نوشتم :
var xmlhttp= new XMLHttpRequest();
var msg = 'My message will be here!';
var sms = function(){
xmlhttp.open("POST", 'send.php');
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
sms();
}
};
i = Math.round( Math.random()*10000 );
xmlhttp.send('phone=98913333'+i+'&message='+escape(msg));
}
و این کد رو اجرا توی فایرباگ مرورگرم اجرا کردم!! جالبه بدونین که تقریبا” ثانیه ای ۲تا sms ارسال میشد و این بود که من در هزینه تبلیغاتم کمی صرفهجویی کردم! بگذریم که این فقط یک روز جواب داد و اون سایت چندروزی میشه که از کار افتاده!!!
مثال دیگه این هم بزنم اینکه یک دایرکتوری بود که من یکی از سایت هام رو بهش اضافه کرده بودم. این دایرکتوری یک rank فرضی بر اساس ورودی هایی که از سایت من به اون دایرکتوری باضافه خروجی های اون دایرکتوری به سایت من ایجاد میکرد و جلو اسم هر سایت نمایش میداد. خب سایت من rank بالایی نداشت. تقریبا” جز ۴۰-۵۰ تا سایت اولش بود که خوب با اجرای کدی شبیه کد بالا هم به سایت خودم ورودی دادم هم خروجی!! و این بود که سایتم از حدود ۵۰ام در یک روز به ۳ام ارتقاء یافت!!!
در واقع از سایت هایی که باگ دارند میتونین به خوبی استفاده کنید. فقط باید یکم حواستون جمع باشه!!! :D
راستی اگر نمیدونید که Firebug چیه، فقط این رو بگم که میتونید با استفاده از گزینه Add-ons در منوی Tools در مرورگر فایرفاکس (Firefox) آنرا به مرورگر خود اضافه کنید.
موفق تر باشید.
Tags: ajax, firebug, firefox, javascript, آژاکس, جاوا اسکریپت, فایرباگ, فایرفاکس
Posted in Mozilla FireFox, javascript | Comments (۰)
موزیلا فایرفاکس Shiretoko
دی ۴م, ۱۳۸۷
نگارش جدید موزیلا فایرفاکس که به زودی نگارش نهایی آن عرضه خواهد شد، تغییرات عمده ای کرده است که می توان از میان آنها، به افزوده شدن پشتیبانی از تصویر و صدا بدون استفاده از نرم افزار خارجی، مرور امن اینترنت، پشتیبانی از موتور tracemonkey برای اجرای بهتر برنامه های جاوا اسکریپت اشاره کرد. نسخه ۱/۳ فایرفاکس که shiretoko نام گرفته است، قرار است اوایل سال ۲۰۰۹ بعد از ارائه نسخه سوم آزمایشی آن، عرضه شود. گویا قرار است ابتدای سال ۲۰۰۹، نبرد سختی میان مرورگرها باشد، مایکروسافت نیز اعلام کرده است که مرورگر اینترنت اکسپلورر نگارش ۸ خود را اوایل ۲۰۰۹ عرضه خواهد کرد و از طرف دیگر، شرکت اپل نیز مرورگر سافاری خود را در همین تاریخ برای دریافت آماده می کند.
منبع من: irictnews.ir
من که خودم شدیدا” از فایرفاکس حمایت میکنم امیدوارم نسخه جدیدش روی بقیه مرورگرهارو همانند گذشته کم کنه. در مرد ictnews هم به سوتی جالب بگم که تازگی ها سیستم اخبار صوتی رو اضافه کرده. هر خبری رو که باز میکنین، بصورت صوتی هم متن اونو میشنوین. داشتم یه خبر از حفره امنیتی پایگاه داده sql server میخوندم که صوت اون load شد و خبر اینطور آغاز شد: “حفره جدید در نرم افزار سکوئل! مایکروسافت”!!!! (اس کیو ال کجا و سکوئل کجا!) شایدم درست تلفظ کرده. من اشتباه میکنم. بهرحال جالب بود برام
Tags: 2009, browser, Damn ie, ff, firefox, ict news, internet explorer, mozilla, opera, shiretoko, sql, sql server, tracemonkey
Posted in Mozilla FireFox | Comments (۰)
jQuery History Plugin
آذر ۲۹م, ۱۳۸۷
چند وقت پیش روی پروژه ای کار میکردم که نیاز به یک پلاگین jQuery برای bookmark شدن لینک هایی که بصورت آژاکس (Ajax) باز میشدند داشتم. درواقع میخواستم که History مرورگر رو شبیه سازی کنه. چندتا پلاگین پیدا کردم که خوب هرکدوم یک کار متفاوت انجام میدادند. مثلا” یکی از اونها همون اول با بارگزاری صفحه شروع میکرد تمام لینک ها رو از اول تا آخر پیمایش میکرد و برای هرکدوم href (مسیر) اونها رو ذخیره میکرد و بجای اونها چیزی شبیه “#text-12″ می گذاشت که عدد آخرش شماره لینک پیمایش شده بود (مثلا” اگر شما ۱۲تا لینک توی صفحه جاری داشتین، این میشد href آخریش).
اما خب این کد مشکلش این بود که اگه شما لینک رو Open Link in New Tab میکردین اونوقت دوازهمین لینک اون صفحه رو باز میکرد نه چیزی که شما میخواستین!!!
و نهایتا” اینها یک سری عیب هایی مثل این داشتن که باعث شدند من خودم بر حسب نیازم کدهایی بنویسم که دقیقا” کاری رو که نیاز داشتم انجام بده. چیزی که من نیاز داشتم این بود که اگه کاربر روی یک لینک کلیک کرد (بطور عادی)، اون لینک بصورت آژاکس باز بشه و در ضمن یک پارمتر اضافی هم ارسال بشه به صفحه بعدی. (مثلا” در اینجا ajax_check هست)
در ضمن، ممکن بود کاربر اون لینک رو توی صفحه دیگه باز کنه. در این حالت هم نباید مشکلی پیش میومد. نکته مهم دیگه هم Back و Forward و حتی Refresh مرورگر بود که باید دقیقا” درست عمل میکرد. راستی نباید این حات رو هم فراموش میکردیم که امکان داره جاوا اسکریپت (javascript) کاربر هم غیر فعال باشه! خلاصه بگم چیزی باشه که کاربر اصلا” خطا نبینه و بهترین امکانات رو هم براش فراهم کنه.
کدی که نوشتم سه قسمت داره (دوتا تابع (function) و یک تکه کد). تابع اول به نام history هست که وظیفه تبدیل مسیر لینک کلیک شده به نوعی هش مخصوص هست که این باعث میشه Back و Forward درست عمل کنند. این تابع هش ساخته شده را در url قرار میده. تابع بعدی هم getHash هست که وظیفه تبدیل هش مخصوص موجود در url رو به آدرس کامل و درخواست این آدرس از سرور و بارگذاری اون رو داره. تکه کد هم وظیفه این رو داره که هر لحظه url و Hash رو در اون تست کنه که اگه تغییر کرده باشه، تابع getHash رو فراخوانی کنه و ادامه داستان…!!
فکر کنم کدهایی که نوشتم واضح باشند. اگه کسی سوالی داشت بپرسه یا بگین تا خط به خط توضیحش بدم.
۲ تا نکته مهم:
۱ . این کدها برای صفحاتی نوشته شدند که پسوند PHP دارند. اما میتونین با یه تغییر ساده در متغیر fileExt اون رو به هرچیزی که میخواین تغییر بدین.
۲ . اگه صفحه شما دارای لینکی باشه که href اون “” باشه، بطور پیشفرض index.fileExt رو باز میکنه که شما میتونین با یک تغییر کوچک اون رو حذف کنید.
منتظر اشکالاتی که توی کد پیدا میکنین هستم!! ;)
var fileExt = 'php';
var history = function(path){
//Question Mark Position
var qmp = (path.indexOf('?') > 0 ) ? path.indexOf('?') + 1 : path.length + 1;
//End of Path Position (Last Position)
var lp = path.length;
var fileNameP1 = path.indexOf('.'+fileExt) + 1;
var fileNameP2 = (qmp > 1) ? qmp-1 : path.length;
var params = path.substring(qmp,lp);
var newPath = '';
var fileName = path.substring( path.substring(0,fileNameP2).lastIndexOf('/')+1 , fileNameP2 ).replace('.'+fileExt,'');
if (params.length > 0 ){
var a = explodeArray(params,"&");
for (var i=0, j=a.length; i<j; i++)
newPath += a[i] + '/';
newPath = '#' + fileName + ':' + newPath;
} else {
newPath = '#' + fileName;
}
if ($.browser.msie) {
var iframe = _historyIframe.contentWindow.document;
iframe.open();
iframe.close();
iframe.location.hash = newPath;
}
location.hash = newPath;
_loadedHash = newPath;
};
var getHash = function(myHash){
h = myHash;
if ( h.length < 1) h = 'index';
if ( h.indexOf(':') > 0 ){
h = h.replace(/^#/,'').replace(':','.'+fileExt+'?');
while( h.indexOf('/') > 0 )
h = h.replace('/','&');
} else {
h = h.replace(/^#/,''); h += '.'+fileExt;
}
$.get(h,{'ajax_check':'true'},function(data){
$body.html('<center>' + data + '</center>');
});
if($.browser.msie)
_loadedHash = _historyIframe.contentWindow.document.location.hash;
else
_loadedHash = myHash;
};
if ($.browser.msie) {
var _historyIframe = $('<iframe style="display: none"></iframe>').appendTo("BODY").get(0);
var iframe = _historyIframe.contentWindow.document;
iframe.open();
iframe.close();
setInterval(function(){
checkScrollbarPosition();
var h = _historyIframe.contentWindow.document.location.hash;
if ( (_loadedHash != null) && ( _loadedHash != h) ) getHash(h);
}, 500);
} else if ($.browser.mozilla) {
setInterval(function(){
checkScrollbarPosition();
if ( (_loadedHash != null) && ( _loadedHash != location.hash) ) getHash(location.hash);
}, 500);
}
try{
if(location.hash.length > 0 && !$.browser.msie)
getHash(location.hash);
}catch(e){}
//Example for use:
$(document).ready(function(){
var $body = $("#content");
$("a").livequery('click',function(){
var h = $(this).attr("href");
$.get(h, {'ajax_check':'true'} , function(response){
$body.html(response);
});
history(h);
return false;
});
});
Tags: ajax, back, bookmark, code, forward, history, jQuery, plugin, refresh
Posted in jQuery, javascript | Comments (۱)
افتتاحیه !
آذر ۲۸م, ۱۳۸۷
سلام!
افتتاح وبلاگم خوشبختانه مصادف شده با عید سعید غدیر خم!
و از طرفی شده کادوی تولد خودم به خودم! بعله! ۲۸ آذر! ( اینم یه نوعشه دیگه…! )
قراره اگه خدا بخواد چیزای جالب و جدیدی رو که میخونم، میبینم و پیدا میکنم رو در رابطه با کامپیوتر، آی تی، اینترنت و کلا” در همین زمینه ها با شما به اشتراک بذارم. برای خودم آرزوی موفقیت بیشتر رو دارم!
راستی الآن برف میاد! (چه ربطی داشت؟!)
خودمو خیلی تحویل گرفتم ! برم دیگه… شب خوش
Tags: آی تی, افتتاحیه, اینترنت, کامپیوتر
Posted in دستهبندی نشدهها | Comments (۱)