زول سیستم عامل کوچکی از خانواده یونیکس است که بر روی یک فلاپی قرار میگیرد. زول بر پایه کرنل لینوکس و ابزارهای GNU و Slackware بنا شده است.
بیشترین نگرانی در مورد سیستم عاملهای کوچک نظیر زول حجم آنها است که نباید از مرز 1440 کیلوبایت عبور کند در عین اینکه امکانات لازم و کافی را هم برای مدیران و کاربران شبکه مهیا کند!
زول میتواند ابزار مناسبی باشد برای مدیران و سرپرستان سیستمهای یونیکس تا در مواقع اضطراری از آن برای رفع مشکلات بوجود آمده کمک بگیرند.
فایلها و کرنل زول قبل از فشرده شدن جمعاً چهار مگابایت داشتند که با تبدیل به Batchfile و سپس به Binary حجم لازم به 1436 کیلوبایت رسید. زول 3 بر اساس کرنل 2.4.18 ساخته شده است و نسبت به ورژن های قبلی دستورات بیشتر و محیط گرافیکی بهتری ارائه میدهد. از Pico و Vi به عنوان ویرایشگر استفاده شده است و همچنین از دستورات شبکه ای Route، Telnet، Ifconfig و Ping برخوردار شده است که برای یک کار شبکه ای ساده کافی است.
یکی از مزایای زول 2 پشتیبانی انواع فایل سیستم سیستم عامل های مختلف بوده که Recover کردن اکثر سیستم عاملهای معروف را ممکن میکند.
زول 3 از فایل سیستم های Ext2-3,Raiserfs,Ntfs,Fat16,Fat32,Msdos,Vfat,Minix پشتیبانی میکند و همچنین چند برنامه مخصوص کار کردن با فایل سیستم های معروف مثل tune2fs بر روی زول قابل استفاده هستند.
اگر کارت گرافیکی شما سازگار با X باشد میتوانید از کنسول 16 بیتی در زول استفاده کنید. زول همچنین از شل Ash استفاده میکند و همینطور از Virtual Console 6.
General Commands | |||||
addpart |
ar |
ash |
basename |
blockdev |
cal |
cat |
cfdisk |
chfn |
chgrp |
chmod |
chown |
chroot |
chsh |
clear |
cmp |
col |
colcrt |
colrn |
column |
cp |
cpio |
cut |
cytune |
date |
dd |
ddate |
debugraiserfs |
delpart |
df |
dirname |
dmesg |
dos2unix |
ln |
loadacm |
loadfont |
loadkmap |
logger |
losetup |
ls |
lsmod |
mkdir |
mkfs |
mkfs |
bfs |
mkfs |
minix |
mknod |
mkreiserfs |
mkswap |
more |
mount |
mt |
mv |
newgrp |
nslookup |
partx |
pidof |
ping |
pivot_root |
poweroff |
printf |
ps |
raw |
rdev |
readprofile |
reboot |
reisefstune |
renice |
rescuept |
reset |
reset_raiserfs |
rev |
rm |
rmdir |
rmmod |
route |
rpmunpack |
script |
sed |
sedfdprm |
setsid |
setterm |
sfdisk |
sleep |
sort |
swapoff |
swapon |
sync |
tail |
tar |
tee |
telnet |
touch |
tr |
tty |
ul |
umount |
uname |
uniq |
unix2dos |
unpack |
unzip |
vigr |
vipw |
wall |
wc |
wget |
which |
write |
xargs |
xxd |
free |
freeramdisk |
kill |
killall |
du |
rdev |
Zcat |
|
در این یادداشت تابع تبدیل عدد به معادل حروفی آنرا ارائه می کنم. عمدتا در سیستم های مالی و حسابداری نیاز است معادل حروفی اعداد هم نمایش داده شده یا چاپ شوند که توابع زیر این نیاز را پاسخ می دهد. مثلا برای چاپ یک چک روی خود برگه چک ، علاوه بر نیاز به چاپ مبلغ عددی چک لازمست تا مبلغ حروفی چک هم روی برگه چاپ شود.
نحوه استفاده از تابع :
تابع Adad که در زیر ارائه شده است یک عدد را بعنوان ورودی گرفته و معادل حروفی آن عدد در زبان فارسی را بعنوان خروجی تولید می کند. مثلا (Adad(1373 مقدار "یک هزار و سیصد و هفتاد و سه" را بعنوان خروجی تولید می کند.
Function Adad(ByVal Number As Double) As String
If Number = 0 Then
Adad = "صفر"
End If
Dim Flag As Boolean
Dim S As String
Dim I, L As Byte
Dim K(1 To 5) As Double
S = Trim(Str(Number))
L = Len(S)
If L > 15 Then
Adad = "بسیار بزرگ"
Exit Function
End If
For I = 1 To 15 - L
S = "0" & S
Next I
For I = 1 To Int((L / 3) + 0.99)
K(5 - I + 1) = Val(Mid(S, 3 * (5 - I) + 1, 3))
Next I
Flag = False
S = ""
For I = 1 To 5
If K(I) <> 0 Then
Select Case I
Case 1
S = S & Three(K(I)) & " تریلیون"
Flag = True
Case 2
S = S & IIf(Flag = True, " و ", "") & Three(K(I)) & " میلیارد"
Flag = True
Case 3
S = S & IIf(Flag = True, " و ", "") & Three(K(I)) & " میلیون"
Flag = True
Case 4
S = S & IIf(Flag = True, " و ", "") & Three(K(I)) & " هزار"
Flag = True
Case 5
S = S & IIf(Flag = True, " و ", "") & Three(K(I))
End Select
End If
Next I
Adad = S
End Function
Function Three(ByVal Number As Integer) As String
Dim S As String
Dim I, L As Long
Dim h(1 To 3) As Byte
Dim Flag As Boolean
L = Len(Trim(Str(Number)))
If Number = 0 Then
Three = ""
Exit Function
End If
If Number = 100 Then
Three = "یکصد"
Exit Function
End If
If L = 2 Then h(1) = 0
If L = 1 Then
h(1) = 0
h(2) = 0
End If
For I = 1 To L
h(3 - I + 1) = Mid(Trim(Str(Number)), L - I + 1, 1)
Next I
Select Case h(1)
Case 1
S = "یکصد"
Case 2
S = "دویست"
Case 3
S = "سیصد"
Case 4
S = "چهارصد"
Case 5
S = "پانصد"
Case 6
S = "ششصد"
Case 7
S = "هفتصد"
Case 8
S = "هشتصد"
Case 9
S = "نهصد"
End Select
Select Case h(2)
Case 1
Select Case h(3)
Case 0
S = S & " و " & "ده"
Case 1
S = S & " و " & "یازده"
Case 2
S = S & " و " & "دوازده"
Case 3
S = S & " و " & "سیزده"
Case 4
S = S & " و " & "چهارده"
Case 5
S = S & " و " & "پانزده"
Case 6
S = S & " و " & "شانزده"
Case 7
S = S & " و " & "هفده"
Case 8
S = S & " و " & "هجده"
Case 9
S = S & " و " & "نوزده"
End Select
Case 2
S = S & " و " & "بیست"
Case 3
S = S & " و " & "سی"
Case 4
S = S & " و " & "چهل"
Case 5
S = S & " و " & "پنجاه"
Case 6
S = S & " و " & "شصت"
Case 7
S = S & " و " & "هفتاد"
Case 8
S = S & " و " & "هشتاد"
Case 9
S = S & " و " & "نود"
End Select
If h(2) <> 1 Then
Select Case h(3)
Case 1
S = S & " و " & "یک"
Case 2
S = S & " و " & "دو"
Case 3
S = S & " و " & "سه"
Case 4
S = S & " و " & "چهار"
Case 5
S = S & " و " & "پنج"
Case 6
S = S & " و " & "شش"
Case 7
S = S & " و " & "هفت"
Case 8
S = S & " و " & "هشت"
Case 9
S = S & " و " & "نه"
End Select
End If
S = IIf(L < 3, Right(S, Len(S) - 3), S)
Three = S
End Function
نت آهنگ خواب های طلایی (Golden Dreams) به همراه فایل mid آن را از اینجا دانلود کنید
فرمت : Zip
حجم : ۲۱ کیلوبایت
شما یک مدیر سیستم هستید و نگهداری از سرور یکی از مهمترین وظایف شماست. آیا برای شما جالب نخواهد بود که بدانید از زمان راه اندازی سرور تا این لحظه زمانی که سرور در دسترسی بوده (Uptime) به روز/ساعت/دقیقه/ثانیه مجموعاً چقدر است و همینطور زمانی که در دسترس نبوده (Downtime) و نسبت این دو، که تشکیل دهنده درصد در دسترس بودن را نمایش میدهد. جالب است، نه؟! شاید جالب تر هم باشد اگر بدانید سرور در چه تاریخ ها و زمانهایی دوباره راه اندازی شده (Boot) و فاصله زمانی بین هر Boot چقدر بوده و باز شاید جالب باشد که بدانید چه تاریخ و زمانهایی دستور Shutdown صادر شده! و قبل از هر Shutdown سرور چه زمانی Up بوده؟ و اینکه تعداد BlueScreenها تا این لحظه چه مقدار است !؟
همه آنچه گفته شد با Uptime Tool و دستورuptime.exe در ویندوز NT،2000 وXP امکانپذیر است و فقط باید ابتدا آن را از سایت مایکروسافت که در بالا به آن لینک دادم دریافت کنید. (اگر آدرس تغییر کرده بود در سایت مایکروسافت uptime.exe را جستجو کنید!)
روش کار با این فرمان بسیار ساده است و اگر بعد از استخراج فایل uptime.exe آن را در systemroot که در ویندوز 2000 بنام WINNT و در ویندوز XP بنام Windows ایجاد میگردد قرار دهید از هر نقطه ازCommand Prompt میتوانید به راحتی با اجرای دستور بدون پارامتر خاصی یک گزارش کلی نظیر آنچه در زیر نمایش داده شده از آخرین بار که سیستم بوت شده ببینید و با دستور uptime /s میتوانیم اطلاعات ریزتری نیز نمایش دهیم
و اما یک نکته مهم که باید به آن توجه داشته باشید استفاده از پارامتر Hearbeat است. برای اینکه سرور قادر باشد اطلاعات مربوط به مدت Shutdown بودن را زمانیکه به درستی نتوانسته پروسه Shutdown را طی کند ذخیره سازد باید با استفاده از uptime /heartbeat آن را فعال کنیم (اگر از این دستور بر روی سرور استفاده میکنید حتماً Heartbeat را فعال کنید). باید توجه داشت که با فعال کردن این گزینه uptime هر پنج دقیقه اطلاعاتی را بر روی Registry ثبت میکند لذا برنامه پیشنهاد میکند از فعال کردن این گزینه بر روی سیستم عاملهایی که بر روی Notebook نصب شده خودداری کنید تا اختلالی در Power Management ایجاد نگردد.
برای آگاهی از پارامترهای مختلف این دستور از ?/ Uptime استفاده کنید.
منبع IT Buzzer
دلفی به ما امکان می دهد آرایههایی از هر نوع متغییری را ایجاد کنیم. برای تعریف آرایه به صورت زیر عمل میکنیم
var
array[indexType1, ..., indexTypen] of baseType;
در این تعریف برای نامگذاری آرایه، از قانون نامگذاری متغییرها استفاده میکنیم و مقدار اولیه را نیز درون یک جفت کروشه قرار می دهیم.
نکته: شما می توانید به جای استفاده از کروشه [] از ترکیب پرانتز نقطه استفاده کنید:
d(.i.):= 3 + i; // Equivalent d[i]:= 3 + i;
نکته: وقتی که شما یک آرایه را تعریف می کنید احتیاجی ندارید که به آن مقدار کمترین یا بیشترین بدهید:
var
A : array [Boolean] of integer;
begin
A[True] := 50;
A[False] := 100;
end;
نکته: توابع Low و High کرانهای پایین و بالای یک متغییر آرایهای یا نوعی یا ترتیبی را بر میگردانند:
for I := 0 to High(X) do S := S + X[I];
آرایههای ثابت
آرایه های ثابت می توانند توسط ساختار ثابت نوع دلفی تعریف شود. نوع ثابت که همیشه با عبارت Const تعریف می شود، نه تنها مانع تغییر مقدار پارامتر می شود، بلکه کدهای بهینه بیشتری برای رشتهها و رکوردهای رد شده به توابع تولید می کند. ما هنگامی از این نوع استفاده می کنیم که نخواهیم مقدار رد شده به یک تابع تغییر کند.
type
TDay = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday(;
const
DayNames : array [TDay] of String[9] = ('Sunday', 'Monday', 'Tuesday' ,'Wednesday', 'Thursday', 'Friday', 'Saturday');
var
Today : TDay;
begin
Today := TDay(DayOfWeek(Date));
ShowMessage('Today is ' + DayNames[Today]);
end;
آرایههای دینامیکی
آرایههای دینامیکی، آرایههای تحلیلی پویایی هستند که ابعاد آنها موقع کامپایل شدن شناخته شده نیست. برای اعلان آنها کافی است یک آرایه بدون بعد تعریف کنید:
var MyFlexibleArray: array of Real;
قبل از به کار گیری آرایههای دینامیکی، ابتدا باید از رویه SetLength برای تخصیص حافظه آرایه استفاده کرد:
SetLength (MyFlexibleArray, 2; (
نکته: آرایههای دینامیکی همیشه مبتنی بر صفر می باشند.
نکته: شما میتوانید آرایههای دینامیکی را قبل از رسیدن به ترک قلمرو از حافظه خارج کنید:
MyFlexibleArray := nil;
نکته: مقدار حافظهای که در اختیار آرایه قرار میگیرد، به طول آرایه ونوع عناصر آن بستگی دارد. به عنوان مثال اگر آرایهای از نوع صحیح به طول 10 داشته باشیم 4*10 بایت حافظه به آن اختصاص مییابد.
فشردهسازی آرایهها
در دلفی شما هنگامی که ساختار خود را تعیین کردید میتوانید با استفاده از کلمه کلیدی packed اطلاعات ذخیره شده خود را متراکم کنید:
type TNumbers = packed array[1..100] of Real;
نکته: استفاده از packed سرعت دسترسی به اطلاعات را کند میکند. در مورد آرایهای از کاراکترها این مورد سازگارتر میباشد.
آرایههای چند بعدی دینامیکی
برای تعریف آرایههای چند بعدی دینامیکی، تنها کافی است ...array of را در ساختار خود تکرار کنید. به طور مثال:
type
TMessageGrid = array of array of string;
var
Msgs: TMessageGrid;
این تعریف یک آرایه دو بعدی از رشتهها می باشد. سپس باید به آرایه خود فضا نسبت داد:
SetLength(Msgs, I, J);
شما میتوانید آرایههای چند بعدی دینامیکی خود را به صورت غیر مستطیلی (Not Rectangular) ایجاد کنید. ابتدا رویه SetLength را صدا زده و پارامتر بعد اول را بدهید:
var
Ints: array of array of Integer;
SetLength(Ints, 10);
ما 10 سطر به آرایه خود اختصاص دادیم. از این پس، شما می توانید ستونهای خود را در هر زمان (با اندازههای مختلف) تخصیص دهید:
SetLength(Ints[2], 5);