یه نویسنده

مقاله، کتاب، برنامه و ...

مقاله، کتاب، برنامه و ...

یه نویسنده

وبلاگی برای فعالیتهای پژوهشی و برنامه نویسی کامپیوتر، که شاید دفتر یادداشتی از دانسته‌های روزانه‌ی من باشد(شاید به‌کار شما هم بیاید). مطالبی که از دنیای کدباز جمع‌آوری میکنم و برای علاقه‌مندان این شاخه از فناوری انتشار میدهم. بیشتر نوشته‌های وبلاگ را برنامه‌نویسی‌php و سیستم‌عامل لینوکس تشکیل می‌دهند.

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

۹ مطلب با کلمه‌ی کلیدی «طراحی وب» ثبت شده است

استخدام برنامه نویس

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

برنامه نویس

الگوریتم aes بین زبانهای مختلف

چند وقت پیش در یکی از کارها اومدیم از الگوریتم aes برای رد و بدل متن بین زبان #c و c استفاده کنیم. نا گفته نماند که پدرمان درآمد چون مایکروسافت طبق معمول برای راحت تر کردن کار برنامه نویس(به قول خودش) کلا این الگوریتم رو دگرگون کرده بود و اصلا دو تا خروجی ها یکسان نبودن بعد از کلی زیر رو کردن وب یه بنده خدایی توی stackoverflow اومده یه قطعه کد گذاشته که کار ما راه افتاد. البته این تجربه شد تا از این به بعد قبل از کد زدن ببینم شاید اصلا در استفاده از این روش مشکلی باشه و اتفاقا هم بود چون این برنامه نویس بنده خدا کلا داکیومنت aes مایکروسافت رو درسته قورت داده بود تا تونسته بود نوع padding و cbc و چیزای دیگه رو پیدا کنه و تطبیقش بده با c.

این گذشت و تا چند روز پیش مجبور بودم یه رشته متن رو بین زبان پایتون و php  رد و بدل کنم. دوباره توی stack گشتم و دیدم یه نفر تگه برنامه تمیزی نوشته بود. هر چند از padding جالبی استفاده کرده بود یدونه کاراکتر } نوع padding بود.

البته این بار مشکل به اندازه #c نبود چرا که نا سلامتی با دو تا زبان برنامه نویسی پدر و مادر دارد طرف بودیم. این کد رفته بود از ماژول crypto.cipher استفاده کرده بود. منم با نصب و استفادش مشکلی نداشتم

پروژه پیش رفت و طبق روال موقع کامپایل برنامه رسید که در تمام ویندوزهای 7 براحتی اجرا میشد ولی در xp ارور زیر رو داشت

actually the encrypted IV which was prefixed to the ciphertex

البته برای برطرف کردن این خطا دیگه تمام راه ها رو برای برطرف کردن خطا رفتم ولی اصلا جواب ندارد. تا به جایی رسیدم که رفتم توی باگ ریپورت پروژه یدونه issue گذاشتم(اینجا). البته الان که دارم مینویسم این پست رو کسی بهش جواب نداده.

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

کارشون واقعا جای تشکر داره اومده بود از پایه بر حسب ریاضیات و base64 الگوریتم aes رو راه انداخته بود. و جالب تر این که برای سه تا زبان php,python,javascript این کد رو نوشته بود و شما کافی بود libraryهای نوشته شده رو در برنامه فراخوانی کنید و ازش استفاده کنید. همچنین در بین زبانی هم درست کار میکرد و اگر مثلا با javascript کد میکردی در php و python برای دیکد کردنش همون خروجی مورد انتظار رو داشتی. 

من کل page و تمام سورس کدهارو اینجا میزارم تا دوستان هم استفاده کنن.

python


import aes
text = "Hello, world!"
password = "itsmysecret"
blocksize = 256   # can be 128, 192 or 256
crypted = aes.encrypt( text, password, blocksize )
# do something
decrypted = aes.decrypt( crypted, password, blocksize )
php

<?php
 
require_once('aes.class.php');
 
$text = 'Hello, world!';
$password = 'itsmysecret';
$blocksize = 256;  // can be 128, 192 or 256
 
$crypted = AES::encrypt( $text, $password, $blocksize );
// do something ...
$decrypted =  AES::decrypt( $crypted, $password, $blocksize );
?>( crypted, password, blocksize )
javascript
<?php
var text = 'Hello, world!';
var password = 'itsmysecret';
var blocksize = 256;   // can be 128, 192 or 256
 
var crypted = AES.encrypt( text, password, blocksize );
// do something...
var decrypted = AES.decrypt( crypted, password, blocksize );
?>
دانلود تمام محتویات و کدهای این پست
دریافت
عنوان: الگوریتم aes
حجم: 1020 کیلوبایت

بررسی قدرت رمز عبور در php

برای این کار کلاس PasswordMeter خیلی کاربرد داره. از منبع اصلی دانلود کنید و یا از اینجا

روش استفاده


<?php
include 'classPasswordMeter.inc.php';
$rrr = new classPasswordMeter('123456dsacasdf');
echo $rrr->CalculateStrenght();

توابع مفید mysql

همیشه رمزنگاری پسوردها در برنامه‌های تحت وب اهمیت بسیار بالایی داره. از اونجا که بیشتر کاربران عادت دارن در تمام سایتها پسوردهای یکی داشته باشن وقتی دیتابیس یک سایت مورد هک واقع بشه و داده‌های اون استخراج بشه براحتی با داشتن فیلدهای نام کاربری و پسورد میشه به تمام اطلاعات دیگر این کاربر حتی در بعضی اوقات به ایمیلش هم دسترسی داشت.

حالا نمیخوام فلسفه پسورد و امنیت اطلاعات رو پیش بکشم بحثم روی کم کرد فشار سرور به کمک توابع داخلی و توکار هست. واقعا تعجب میکنم با این که زبانهای برنامه‌نویسی به مرور زمان توابع و امکانات جدید بهشون اضافه میشه و حتی در دیتابیس‌ها هم شاهد این موضوع هستیم باز هم افزادی هستن که سرور رو مشغول کارهای پیش‌پا افتاد و الگوریتم‌های سنگین میکنن. مثلا یه برنامه‌نویس میاد یک کلاس برای هش کردن پسوردها مینویسه که توش از تمام توابع(از sha و md5 گرفته تا rand و چیرهای دیگه) استفاده کرده تا کار هش کردن پسورد رو انجام بده. اولا باید گفت درصد رمز نگاری و استفاده از الگوریتم‌های پیشرفته کاملا وابسته با پروژه و شرایط کارفرما داره. مثلا رمز نگاری یه فروشگاه الکترونیکی که هر کاربر قراره مبلغی از حسابش کم بشه و توی بودجه اکانتش درون سایت قرار بگیره با یه سایت شخصی ساده کاملا فرق داره. در فروشگاه اگر اکانتش لو بره امکان داره پولی رو از حسابش برداشت شده توسط شخص دیگری که اکانت رو هک کرده به حساب دیگری واریز بشه یا خرید انجام بگیره در صورتی که خود صاحب اصلی اکانت اصلا اطلاع نداشته. 

در php تابع crypt رو خوب یادبگیرید که امکانات زیادی مثل salt رو هم داره. ولی در دیتابیس mysql تابع ENCRYPT کار مشابه crypt رو انجام میده.

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


استفاده از این تابع بصورت زیر هست:

INSERT INTO

`tbl_user`(`username`,`email`,`password`)

VALUES

('seifzadeh','mehrdad@gmail.com',ENCRYPT('1234'));

عکسهای تست برای برنامه‌نویسی

بارها پیش اومده برای تست یک اسلایدر یا قرار گیری عکس در یک مکان مشخص نیاز به اندازه خاصی از عکس بود تا بخوبی عملیات تست و برنامه‌نویسی صورت بگیره. به نا چار از یکسری از عکسهای پایه استفاده میکردم یاد مدام عکسها رو تغییر اندازه میدادم.

اما این بار با سرویس جالب lorempixel آشنا شدم. کار این سایت در اختیار قرار دادن انواع تصاویر بنا به درخواست هست

مثلا تصویر در اندازه 200*200 رو بصورت زیر برای سایت میفرستید و این سایت تصویری به همون اندازه برای شما روی ارسال میکنه

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

در نا امیدی بسی امید است

همیشه مرورگر اینترنت اکسپلورر مایکروسافت IE امید طراحان وب رو به نا امیدی تبدیل می‌کرد. هیچ چیز زجر آورتر از این نیست که این مرورگر حتی نسخه‌های ۶ و ۷ و ۸ کاملا با هم فرق دارن و هر صفحه‌ای که طراحی میشه مدام باید در تمام نسخه‌ها تست بشه. مثلا امیر عباس عبدلی بر روی سیستمش بصورت مجازی دو تا ویندوز داره و مدام نسخه‌ها رو در اونها تست میکنه.

ولی انگار امیدی هست و کاربران کم کم دارن از IE جدا میشن و میان سمت مرورگرهای دیگه امار مقایسه سال ۲۰۱۲ با ۲۰۱۳ رو از سایت sitepoint.com گرفته شده:


بهترین زبان برنامه نویسی برای یادگیری در سال ۲۰۱۳ کدام است؟

بعضی شرکت ها و سازمان ها هستند که آمار بسیار دقیق و جزئی از فناوری ها اعلام میکنند. اعتبار این آمارها هم به گذشته درخشان اونها و درصد استفاده از آمارهای این سازمان ها در مقالات معتبر بر میگرده.

در زیر گذری داریم به بالاترین آمارهای زبان های برنامه نویسی و همچنین آمار دقیق همراه با مدارک معتبر از سازمان های معتبر.

وب فارسی با وردپرس

همیشه در وبلاگ نویسی پیدا کردن یه سیستم خوب و خوش دست دغدغه تمام ما وب لاگ نویس ها و نوسندگان وب فارسی بوده. در کنار سایت های بزرگ وبلاگ دهی جهان مثل wordpress.com و bloger.com (که تو ایران مسدوده) سایت های وبلاگ دهی ما در کشور بسیار ضعیف هستند. البته بلاگ تحول بسیار خوبی ایجاد کرده که حتی مشابه خارجی هم ندارد.

دانلود آموزش php,css,html سایت w3schools

سایت w3schools.com منبعی بسیار خوب برای یادگیری طراحی و برنامه نویسی وب هست. آموزش های php,css,html این سایت رو با نرم افزار رایگان و اوپن سورس HTTrack جمع آوری کردم و در سه بسته مختلف قرار دادم که میتونید دانلود کنید.