سرشار از زندگی

طبقه بندی موضوعی

این فایل رو از اینترنت پیدا کردم. به زبان فارسیه و نحوه ی نوشتن تحلیلگر برای flex رو توضیح داده!

دریافت

۴ نظر موافقین ۲ مخالفین ۰ ۲۵ اسفند ۹۲ ، ۲۱:۵۱
mjrh

نرم افزار flex برای ایجاد تحلیلگر از فایل نوشته شده به زبان flex استفاده می شود. در این فرایند، شما ابتدا فایل نوشته شده با زبان flex را به این نرم افزار می دهید و در خروجی یک فایل به زبان c ) c.*) تولید می کند که با کامپایل آن، scanner شما آماده استفاده خواهد بود!

حال به نحوه ی انجام این فرایند  با یک مثال می پردازم:

ایجاد تحلیلگر با flex

  • ابتدا فایل اجرایی flex را از اینجا دریافت کنید (200KB) و از حالت فشرده خارج کنید.
  • فایل با پسوند l  را در محلی که flex را از حالت فشرده خارج کردید (مثلا درایو F)، داخل پوشه ی زیر  قرار دهید.  (برای نوشتن فایل l ، این پست را ببینید)
F:\flex-2.5.4a-1-bin\bin
  • command ویندوز را باز کرده و با استفاده از دستور زیر به دایرکتوری مورد نظر بروید:
cd /d F:\flex-2.5.4a-1-bin\bin
  • حال با استفاده از دستور زیر فایل majidr.l را به flex بدهید:
flex majidr.l
  •  حالا اگه مشکلی نباشد، فایلی با نام lex.yy.c در همان محل تولید می شود. 

کامپایل کردن فایل تولید شده

  • برای کامپایل این کد، هر نسخه ای از Visual Studio را که دارید، باز کنید و از منوی Tools، گزینه ی Visual Studio Command Prompt را بزنید تا پنجره ی command باز شود. حال دستور زیر را وارد کنید تا به دایرکتوری مورد نظر بروید:
cd /d F:\flex-2.5.4a-1-bin\bin 
  • برای کامپایل دستور زیر را وارد نمایید:
cl lex.yy.c
  • با این کار فایل اجرایی در کنار فایل c ایجاد می شود.

استفاده از تحلیلگر کامپایل شده

  • برای استفاده از تحلیلگر،  مانند دستور زیر عمل کنید:
lex.yy <majidCodes.txt> majidOut.txt

که در آن  majidCodes.txt، فایل حاوی کد برای تحلیلگر  و  majidOut.txt ، فایل خروجی تحلیلگر است.


اگر ایرادی توی این پست بود یا ... ، در نظرات اعلام کنید!

۲۱ نظر موافقین ۰ مخالفین ۰ ۲۵ اسفند ۹۲ ، ۱۹:۴۳
mjrh

در این مطلب masm و  linker اون برای کدهای اسمبلی 16 بیتی رو براتون گذاشتم: 

دریافت

برای محیط نوشتن هم WinAsm رو توصیه می کنم:

برای دیدن بزرگتر، روی عکس کلیک کنید.

برای تنظیم masm32 برای WinAsm، در WinAsm، منوی Options < Tools را باز کرده و بخش Files & Paths را بیاورید و 3 آدرس اول را مطابق جایی که masm32 وجود دارد و با کمک شکل پایین تنظیم کنید:

یادتون باشه که WinAsm نیازی به نصب نداره و با اجرای فایل WinAsm.exe شروع میشه.

یه برنامه آزمایشی "سلام جهان" رو پایین می بینید:

.MODEL small
.STACK 100h
.data
message BYTE "Hello, world!","$"
.code
_start:
mov ax, @data
mov ds, ax
mov ah,9
mov dx,OFFSET message ; addr of buffer
int 21h
mov ah,1
int 21h
END _start
۱ نظر موافقین ۱ مخالفین ۰ ۱۱ اسفند ۹۲ ، ۱۷:۲۹
mjrh

در این جا اتصال قطعات در MAX+plus II  (که همه رو دیوونه کرده)  با روش کم دردسر نام گذاری سیم و نکات اون رو خدمتتون عرض می کنم:

  • در این روش، برای اتصال دو سیم کافیست نام آن ها یکی باشد. کمی از سیم قطعه را بیرون بکشید و در حالتی که قرمز است، آن را نام گذاری کنید. مانند ورودی های multiplexer ای که 16 ورودی دارد و با همین روش، به سایر قطعات مدار متصل هستند (شکل اول)
  • اگر جایی، به تمام بیت های یک سیم (bus) نیاز ندارید، کافیست در درون []، بازه ی بیت های مورد نیاز را بیاورید؛ مانند ورودی distance قطعه ی shift right که فقط 3 بیت از 8 بیت سیم second را استفاده می کند (شکل اول)
  • اگر نیاز داشتید که از چند سیم چند بیتی به یک سیم چند بیتی (bus) اتصال ایجاد کنید، نام سیم های تک بیتی را با عدد انتهایی که نشانگر محل این بیت در سیم نهایی چند بیتی است، مشحص کنید؛ مانند شکل دوم (سیم bcd)
  • همواره باید نام سیم ورودی ها و خروجی ها با نام خود ورودی ها عینا برابر باشد. (شکل اول)
  • توجه کنید که سیم های چند بیتی (bus) پر رنگ هستند.

برای دیدن بزرگتر عکس ها، روی آن ها کلیک کنید.



۰ نظر موافقین ۰ مخالفین ۰ ۰۸ اسفند ۹۲ ، ۲۲:۰۴
mjrh

در این جا فایل TeX ای که برای درس شیوه ی ارائه ی مطالب آماده کردم رو برای دریافت گذاشتم. امیدوارم مفید باشه!



فایلTeX

فایل PDF


۲ نظر موافقین ۲ مخالفین ۰ ۰۲ اسفند ۹۲ ، ۱۴:۰۱
mjrh

 وب معنایی[1] گستره ای از وب کنونی است که امکان معنا کردن دقیق اطلاعات به دایره­ی لغات قابل فهم برای انسان و رایانه را فراهم می­کند. وب معنایی اولین بار توسط Tim Berners Lee که مخترع شبکه­ی جهانی وب نیز بود، معرفی شد. در حال حاضر در W3C[2]  افرادی برای گسترش و بهبود شمای وب معنایی به طور اختصاصی فعالیت می­کنند. اگرچه فناوری­ها­ی وب معنایی در نوباوگی به سر می­برند، اما آینده­ی تحقیقات روشن به نظر می­رسد.  در وب معنایی، اطلاعات با استاندارد جدید W3C که چارچوب توصیف منبع (RDF[3]) نامیده می­شود، توصیف می­شود. Ontology یکی از مهم­ترین مفاهیم زیربنایی وب معنایی است؛ به طوری که چارچوب­های توصیف منبع و زبان شناخت وب (OWL[4]) دو مدل ارائه­ی Ontology توصیه شده توسط W3C  هستند. وب معنایی امکانات بیشتری را فراهم می کند؛ اکتشاف، خودکاربودن، جامعیت و قابلیت استفاده­ی مجدد از داده ها و همچنین راه حل برخی مشکلات وب که با فناوری­های موجود قابل حل نیستند.

بیشتر موتورهای جستجو، برای پاسخ به کاربر به جستجوی کلمه­ی کلیدی مربوطه می­پردازند. موتورهای جستجو معمولا صفحه­های وب را برای اطلاعات خواسته شده جستجو می­کنند. با این حال برخی صفحه­ها را با الگوریتم­های پیشرفته  از نتایج حذف می­کنند. هدف اصلی این موتورهای جستجو، ارائه­ی نتایج نزدیک به درخواست در زمان کم با استفاده از آخرین یافته­های الگوریتمی است. همچنین با این دیدگاه موتورهای جستجوگر گاهی نتایج غلط یا درست اما غیر قابل اطمینان تولید می­کنند. در جستجو بر پایه­ی کلمه کلیدی معمولا نتایجی از blog یا انجمن­های عمومی در نتیجه آورده می شود که به دلیل عدم اعتماد، خوشایند کاربرها نیست. برای حل این مشکل در موتورهای جستجوگر، و استخراج هوشمندانه­ی اطلاعات با معنی و مربوط؛ فناوری وب معنایی، مفید خواهد بود. فناوری هوشمند معنایی نتایج نزدیکتری نسبت به خواسته­ی کاربر تولید می­کند.


این مقاله کوچولو ترجمه ای بود از:

G.Madhu and A.Govardhan, and T.V.Rajinikanth, Intelligent Semantic Web Search Engines: A Brief Survey, International journal of Web & Semantic Technology,2011.



[1] semantic web

[2] World Wide Web Consortium

[3] Resource Description Framework

[4] Web Ontology Languages


۱ نظر موافقین ۰ مخالفین ۰ ۰۲ اسفند ۹۲ ، ۱۳:۵۲
mjrh

قصد دارم آموزش Entity Framework که جزو بسته ی NET. هست و یکی از بهترین ORM هاست رو خدمتتون ارائه کنم.

حالا اول بریم سراغ این که ORM چیه و به چه دردی می خوره؟!

ORM سر واژه ی عبارت Object Relational Mapping هستش که به معنی نگاشت شی رابطه ای است. در برنامه نویسی شی گرا تمامی کارها با پیاده سازی اشیا عملیاتی می شوند اما در پایگاه داده های رابطه ای ما با جداول و رابطه ی بین آن ها سروکار داریم. مشکل اینجاست که  انواع پیچیده ای که ما برای انتزاع به صورت شی درمی آوریم  امکان ذخیره  مستقیم در پایگاه داده را ندارند. بنابراین ما مجبوریم برای ذخیره ی اشیا، آن هارا به اجزای ریز مطابق با پایگاه داده رابطه ای مورد استفاده خودمان در بیاوریم. (مثلا به انواع varchar و tinyint و... که در Microsoft SQL وجود دارد) موقع بازخوانی مقادیر هم مشکل مقدار دهی اشیا را خواهیم داشت.

در واقع نسبت به روش معمولی اتصال به پایگاه داده، این روش به کد نویسی کمتری نیاز دارد.

۱ نظر موافقین ۱ مخالفین ۰ ۳۰ بهمن ۹۲ ، ۰۹:۰۴
mjrh

برق با شوقم شراری بیش نیست                                    شعله طفل نی‌سواری بیش نیست

آرزوهای دو عالم دستگاه                                                ازکف خاکم غباری بیش نیست

چون شرارم یک نگه عرض است و بس                              آینه اینجا دچاری بیش نیست

لاله وگل زخمی خمیازه‌اند                                                عیش این‌گلشن خماری بیش نیست

تا به‌کی نازی به حسن عاریت                                           ما و من آیینه‌داری بیش نیست

می‌رود صبح و اشارت می‌کند                                          کاین‌گلستان خنده‌واری بیش نیست

تا شوی آگاه فرصت رفته است                                         وعدهٔ وصل انتظاری بیش نیست

دست از اسباب جهان برداشتن                                        سعی‌گر مرد است‌کاری بیش نیست

چون سحر نقدی‌که در دامان توست                                    گربیفشانی غباری بیش نیست

چند در بند نفس فرسودنست                                           محوآن دامی‌که تاری بیش نیست

غرقه ی وهمیم، ورنه این محیط                                         از تنک آبی‌کناری بیش نیست

ای شرر، از همرهان غافل مباش                                       فرصت ما نیزباری بیش نیست

بیدل این‌کم‌همتان بر عز و جاه                                           فخرها دارند و عاری بیش نیست

۰ نظر موافقین ۱ مخالفین ۰ ۲۴ بهمن ۹۲ ، ۱۷:۲۰
mjrh

برای تولید فایل excel از DataTable می توان از EPPlus استفاده کرد.

برای شروع EPPlus را از اینجا دریافت کنید و آن را از حالت فشرده خارج کنید.

سپس در Visual Studio در منوی PROJECT گزینه ی Add Reference را کلیک کنید تا پنجره ای مانند شکل زیر ظاهر شود:


سپس با استفاده از دکمه ی Browse ، فایل دریافتی (EPPlus.dll) را انتخاب کنید.

بعد کدی مانند کد زیر را در فایل (code behind (.aspx.cs یا (generic handler (.ashx.cs قرار دهید:

using OfficeOpenXml;
using OfficeOpenXml.Table; //adding library

DataTable dt=GetDT(); //get your DataTable from some method or...
using (ExcelPackage pck = new ExcelPackage())
{
if (dt.Columns.Count > 0)
{
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("addYourSubjectHere");
ws.Cells["A1"].LoadFromDataTable(dt, true, TableStyles.Medium6);
ws.Cells.AutoFitColumns();
using (ExcelRange rng = ws.Cells)
{
rng.Style.Font.SetFromFont(new Font("Tahoma", 10));
}
pck.Workbook.Properties.Title = "yourTitle";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=Invoice.xlsx");
Response.BinaryWrite(pck.GetAsByteArray());
Response.End();
}
}
در صورتی که از این کد در generic handler استفاده می کنید، نیازی به 
Response.End();
 در انتهای کد نیست.
۰ نظر موافقین ۰ مخالفین ۰ ۲۴ بهمن ۹۲ ، ۱۵:۳۲
mjrh


یک روز که داشتم دنبال صفحه کلید مجازی برای پروژه ام می گشتم، این صفحه کلید به نظرم جالب اومد:



 اما بعد از دریافت و قرار دادن این صفحه کلید توی نرم افزارتون متوجه می شید که کلیدهای اون همیشه ثابت هستند. برای افزایش امنیت بهتره هر بار ترتیب کلیدها عوض بشه. برای این منظور، طوری ویرایشش کردم که کلیدهاش هر بار جاشون عوض بشه.

برای استفاده از این صفحه کلید ابتدا اون رو از اینجا دریافت کنید و همون طور که تو فایل دریافتی موجوده، موارد زیر رو به بخش header صفحه ی HTML تون اضافه کنید (به jQuery و jQueryUI هم نیاز دارید):

<script src="../script/jquery-1.10.2.min.js" type="text/javascript"></script>
<script src="../script/jquery.keyboard.min.js" type="text/javascript"></script>
<script src="../script/jquery-ui.custom.min.js" type="text/javascript"></script>
<script src="../script/jquery.keyboard.extension-typing.js" type="text/javascript"></script>
<link href="../style/jquery-ui.min.css" rel="stylesheet" type="text/css" />
<link href="../style/keyboard.css" rel="stylesheet" type="text/css" />

حالا برای معرفی این که کدوم ورودی باید به این صفحه کلید مجهز بشه، از این کد استفاده کنید:

$(function () {
jQuery("#pass").keyboard({ openOn: null, stayOpen: true }).addTyping();
$("#pass").focus(function () { $('#pass').getkeyboard().reveal(); });
});

مثال کاملش رو می تونید اینجا ببینید. (Source code رو ببینید)

۰ نظر موافقین ۰ مخالفین ۰ ۲۴ بهمن ۹۲ ، ۱۳:۳۷
mjrh