مطالب
مثال ساده پرداخت بانکی با استفاده از تراکنش و پروسیجر در مای اس‌ کیو ال
برای انجام عملیاتی مثل عملیات حسابداری، نیاز به انجام پی در پی چندین دستور می‌باشد و در صورت انجام نشدن یکی از آنها، بقیه نیز نامعتبر خواهند بود که برای پیاده سازی این مکانیزم از تراکنش‌ها در بانک اطلاعاتی استفاده می‌شود. تراکنش‌ها معمولآ در بدنه‌ی توابع ذخیره شده روی بانک (stored procedure) پیاده سازی می‌شوند. برای تعریف یک پروسیجر در مای اس کیو ال من از برنامه‌ی MySQL Workbench  به شکل زیر استفاده می‌کنم. البته می‌توان دستور ایجاد تابع را از روش‌های دیگر هم اجرا کرد.


در مای اس کیو ال برای تعریف یک تابع از ساختار زیر استفاده می‌کنیم :
DELIMITER $$

CREATE 
          DEFINER=`user_name`@`host_name`|CURRENT_USER 
          PROCEDURE `transition_name`(

IN | OUT  | INOUT `parameter_name` type(bigint,int , ...)
)
    SQL SECURITY  DEFINER| INVOKER
transition_name: BEGIN

#----procedure_body 

END
نکات مربوط به تعریف :
در قسمت
  DEFINER=`user_name`@`host_name`|CURRENT_USER
کسی که تابع را تعریف کرده معرفی می‌شود. اگر شما برای انتقال دیتابیس از جایی به جای دیگر، از روش ایمپورت و اکسپورت استفاده کنید، اگر نام کاربری بانک شما متفاوت باشد، معمولآ این قسمت باعث خطا می‌شود؛ چون شما نمی‌توانید به نام فرد دیگری تابع بسازید. پیش فرض هم مقدار
CURRENT_USER
در نظر گرفته می‌شود که همان اسم کاربری و هاست شما است.
نکته بعدی : قسمت
SQL SECURITY  DEFINER| INVOKER
است که استفاده کننده از پروسیجر را مشخص می‌کند. مقدار DEFINER یعنی فقط تعریف کننده حق استفاده از این پروسیجر را دارد و مقدار INVOKER یعنی هر کسی حق استفاده از این تابع را دارد .
برای شرح تراکنش، مثال پرداخت بانکی را شرح می‌دهیم:
DELIMITER $$

CREATE 
        DEFINER=CURRENT_USER
        PROCEDURE `transition_pay`(
                #-----------input value
               IN `pay_value` bigint,
               IN `admin_id` int,
               #-------------result code 
               OUT `result` bigint
)
    SQL SECURITY INVOKER
transition_pay: BEGIN 
DECLARE  admin_credit DOUBLE  DEFAULT  0;   
SELECT `Credit`
INTO   admin_credit  
FROM  `Admin`

WHERE `Admin_id` = admin_id 
#----- transaction  body
END
در قسمت بالا متغیری را تعریف کرده و آخرین میزان اعتبار ادمین را داخل آن قرار دادیم تا در قسمت تراکنش، مقدار پرداختی را به آن اضافه کنیم و دو باره ادمین را آپدیت کنیم.
 اگر بخواهیم به دلیلی قبل از رسیدن به تراکنش آن را کنسل کنیم، می‌توان از دستور LEAVE استفاده کرد:
 مثال :
IF admin_id=0 THEN 
set result = -1 ; 
#exit procedure
LEAVE transition_pay;
END IF;
حال شروع تراکنش حالت ساده  :
START TRANSACTION;
          INSERT INTO 
                                 `PayBalance` (`Value` , `Admin_id` )
                                  VALUES (pay_value,  admin_id);

          UPDATE `Admin`
           SET `Credit`=admin_credit + pay_value  
          WHERE `admin_id`=admin_id;
COMMIT;
با پایان تراکنش، تمام مقادیر به درستی در بانک ذخیره می‌گردند.
حال اگر بخواهیم به دلیلی داخل تراکنش آن را لغو کنیم از دستور ROLLBACK استفاده می‌کنیم. 
مثال:
IF pay_value=0 THEN 
set result = -1 ; 
#roolback procedure
ROLLBACK ;
END IF;  
برای اطمینان از اجرا شدن دستورات در مای اس کیو ال می‌توان از
SET autocommit = {0 | 1}
نیز استفاده کرد که مقدار پیش فرض آن یک است. یعنی هر دستوری بلافاصله اجرا شود. می‌توان قبل از دستوراتی که می‌خواهیم پی در پی اجرا شوند، یک بار آن را صفر و بعد از اجرای دستورات آنرا یک کنیم.
نکته آخر اینکه با استفاده ار زبان پی اچ پی هم می‌توان تراکنشی را شروع و تمام کرد و بین این دو دستورات مورد نظر را نوشت و همیشه وجود پروسیجر الزامی نیست.
دوره‌ها
معرفی SignalR و ارتباطات بلادرنگ
ASP.NET SignalR فریم ورک جدیدی برای ساخت برنامه‌های بلادرنگ (realtime) تحت وب است.
در این دوره به مشکلات موجود بر سر راه ارتباطات بلادرنگ در برنامه‌های وب اشاره شده و در ادامه به معرفی ASP.NET SignalR خواهیم پرداخت. سپس مفاهیمی مانند Hubs ، Clients و Hosting بررسی می‌شوند. همچنین قسمتی نیز به خطایابی و آشنایی با نحوه دیباگ این نوع برنامه‌ها اختصاص یافته است.
نظرات اشتراک‌ها
ویروس مخصوص سیستم های مالی با دیتابیس SQL Server
این روش متداولی است که اکثر برنامه نویس‌های ایرانی رعایت می‌کنند. برنامه‌‌های مدت داری که اگر هزینه برنامه و حق و حقوق برنامه نویس در طی مدت مشخصی پرداخت شد، کار می‌کنند یا اگر نه ... قسمت‌های اصلی سیستم حذف خواهند شد.
نه ربطی به ویندوز یا SQL Server داره، نه مسایل سیاسی و نه به شرق و غرب عالم! روشی است بومی، جهت استیفای حق و حقوق!
اشتراک‌ها
گزارش حقوق و دستمزد برنامه نویسان در سال ۹۷

روزهای پایانی سال است و یکی از مهمترین دغدغه‌های برنامه‌نویسان و سازمان‌ها این است که حقوق منصفانه آن‌ها چقدر باید باشد و در بازار کار بصورت میانگین به برنامه‌نویسان حوزه‌های مختلف و با تجربیات متنوع چقدر پرداخت می‌شود؟ گزارش "جاب‌ویژن"  با موضوع حقوق و دستمزد برنامه نویسان می‌تواند در این راستا راهگشا باشد. لازم به ذکر است که این گزارش براساس داده‌های واقعی و از بیش از ۱۳۰۰ نفر از برنامه‌نویسان سطح کشور جمع‌آوری شده است. 

گزارش حقوق و دستمزد برنامه نویسان در سال ۹۷
اشتراک‌ها
معرفی اکاتریپ، ماراتـــون برنامه نویسی با هـــدف تولیـــد سرویس های آنلاین و موبایلی در حوزه گردشگری است.

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

معرفی اکاتریپ، ماراتـــون برنامه نویسی با هـــدف تولیـــد سرویس های آنلاین و موبایلی در حوزه گردشگری است.
نظرات مطالب
پَرباد - راهنمای اتصال و پیاده‌سازی درگاه‌های پرداخت اینترنتی (شبکه شتاب)
درگاه بانک ملی (سداد)  به صورت نسخه تست  به پرداخت اینترنتی افزوده شد.
پذیرنده‌هایی که درگاه ملی سداد را در اختیار دارن، در صورت تمایل، میتوانند نسخه جدید را امتحان کنند و نتیجه عملکرد را در صفحه پروژه اعلام کنند.
نحوه نصب:
Install-Package Parbad -Version 1.3.0-beta1

نسخه نهایی پس از موفق بودن تست منتشر خواهد شد.
نظرات مطالب
پَرباد - راهنمای اتصال و پیاده‌سازی درگاه‌های پرداخت اینترنتی (شبکه شتاب)
مگه میشه که کاربردی نداشته باشه, شماره درگاه و نام کاربری, رمز عبور برای این هستش که شما توسط شبکه پرداختی تایید هویت بشین و وجه مربوط به خرید اینترنتی به حساب شما تسویه بشه, 
توی بخش مربوط به تنظیمات درگاه پرداخت توی تصویر اگه دقت کنی این خط کد رو میتونی ببینی:
ParbodConfiguration.Gateways.ConfigureMellat 
نظرات مطالب
Cookie - قسمت سوم
یک کوکی ایجاد کردم و یه سری دیتا درون اون قرار دادم. در جایی از سایت برای پرداخت اینترنتی به درگاه بانک متصل میشم اما بعد از برگشت از بانک ، وقتی میخوام مقدار کوکی رو بخونم ، کوکی مقدارش خالیه. حتی دستور Page.User.Identity.IsAuthenticate هم مقدار false بر می‌گردونه.در صورتی که قبل از ارسال به درگاه، کاربر لاگین بوده.
ممنون میشم راهنمایی کنید.
نظرات مطالب
صفحه کلید مجازی برای ورود اطلاعات
سلام
تا جایی که یادم میاد، برنامه هایی هم بودن که نقاطی که موس روشون کلیک کرده بود رو ذخیره می‌کردن (چطوریش رو نمی‌دونم!)
اگه همچین برنامه هایی وجود داشته باشن حتی اگه مثل صفحات پرداخت آنلاین بانک‌ها که جای ۱۰ کاراکتر عدد، تغییر می‌کنه، با آنالیز شماره کارت‌ها و مسائلی از قبیل اینکه هر بانک با شماره خاصی شروع می‌شه و... ، فکر کنم بدست آوردن اطلاعات حساس کار سختی نباشن...
درست می‌گم؟
نظرات مطالب
باگ Directory Traversal در سایت
هدف تست دیشب مشکل دیگری بود که در مطلبی جدا به آن خواهم پرداخت. اما برای اینکه بدانید برای این مورد اخیر چقدر بی توجهی می‌شود کافیست در گوگل صفحاتی را جستجو کنید که آدرسهایی اینگونه دارند و سعی کنید با تغییر آدرس، فایل web.config را دانلود کنید :
.../download.aspx?file=...
.../download.ashx?file=...
.../get.aspx?file=...
.../get.ashx?file=...
.../download.aspx?path=...
.../download.ashx?path=...
...
به این صورت جستجو کنید :
inurl:"/download.ashx?path="
سایتهای فارسی زیادی هم میتوانید پیدا کنید که این مشکل را دارند.