Author Archives: بنیامین خلیفه

سیستم grid فریمورک semantic

Category : semantic-ui , UI

در این مطلب فریم ورک سمانتیک رو به صورت مختصر معرفی کردیم

Grid

اما حالا می خواهیم نگاهی به سیستم grid این فریمورک بیندازیم . که به شما قابلیت کادربندی مناسب صفحات را می دهد . برخلاف bootstrap که فضا را به 12 قسمت تقسیم می کند semantic ui از فضا را به 16 قسمت تقسیم می کند در ادامه از یک مثال ساده استفاده می کنیم

<div class="ui grid" >

  <div class="four wide column" >

  </div>

  <div class="ten wide column" >

  </div>

  <div class="two wide column" >

  </div>

</div>

در مثال بالا ما سه div تعریف کردیم که div اول ما 4 واحد از 16 واحد و div دوم ده واحد از فضا را به خود اختصاص داده است

یک روش دیگر برای این کار

<div class="ui three column grid" >

  <div class="column" >1<div>
  <div class="column" >2<div>
  <div class="column" >3<div>

</div>

در این روش می توانید صفحه را به سه قسمت مساوی تقسیم کنیم .

توجه کنید که در این مثال ها ما به هر div یک background اختصاص دادیم که بهتر بتوانید عملکرد کد ها را ببینید

در طراحی ساخت سایت شما باید صفحات سایت را ریسپانسیو ( واکنشگرا ) بسازید تا هم در مبایل و یا در مانیتور ها با سایز های مختلف به درستی نمایش داده شوند فریمورک semantic هم کلاس های مختلفی را برای این منظور در نظر گرفته است به نمونه کد زیر توجه کنید

<div class="ui centered grid">
  <div class="computer only row">
    <div class="column"></div>
  </div>
  <div class="six wide tablet eight wide computer column"></div>
  <div class="six wide tablet eight wide computer column"></div>
  <div class="six wide tablet eight wide computer column"></div>
</div>

در نمونه کد بالا کار کلاس computer only آن هست که این div فقط در صفحات کامپیوتر و نمایشگر های بزرگتر نشان داده شود و در نمایش گر های کوچکتر hide می شود 

اما در کلاس های six wide tablet تایین می کنیم که div ما در صفحه نمایش های دستگاه هایی مثل تبلت و مبایل 6 واحد و در صفحه نمایش های بزرگتر 8 واحد اشغال کنن به این صورت انعطاف بیشتری در ریسپانسیو کردن داریم

کلاس centered هم همان طور که از اسم آن مشخص است div های ما را در مرکز صفحه قرار می دهد 

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

<div class="ui stackable four column grid">
  <div class="column"></div>
  <div class="column"></div>
</div>


معرفی فریمورک semantic-ui

امروزه توسعه دهندگان برای ساخت سایت و دیزاین صفحات سایت از فریمورک هایی که برای این منظور ساخته شده اند استفاده می کنند . فریم ورک های مختلفی وجود دارم اما دوتا از معروف ترین این فریم ورک ها bootstrap و semantic-ui هستند ( سمانتیک )

اما چرا باید از semantic-ui استفاده کنیم ؟ این فریمورک نسبت به bootstrap دارای کامپوننت های بیشتر و زیباتری هست و دست شما را برای توسعه سایت های مدرن باز میزارد همین طور کلاس های آن بسیار شبیه به زبان انسان نامگذاری شده

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

<button class="ui green button" > NitroCode.ir </button>

به همین سادگی یک باتن به رنگ سبز ایجاد میکنید 🙂

در این فریمورک علاوه بر قابلیت های css دارای کتابخانه های جاوا اسکریپت هم هست که کار برا لیست ها و کامپوننت های آن را ساده می کند

این فریم ورک قابلیت های صفحه بندی و ریسپانسیو مناسبی هم دارد که کمی با فریمورک bootstrap فرق دارد . ویژگی دیگر و جالب این فریم ورک دارا بودن ایکون های مناسب در خود فریم ورک هست . همین حالا که در حال نوشتن این پست هستم اخرین ورژن منتشر شده این فریمورک نسخه 2.4.2 است

برای پیاده سازی این فریم ورک به صورت زیر عمل میکنیم

<link rel="stylesheet" type="text/css" href="semantic/dist/semantic.min.css">
<script
  src="https://code.jquery.com/jquery-3.1.1.min.js" ></script>
<script src="semantic/dist/semantic.min.js"></script>

 

همین حالا وارد سایت این فریمورک بشید و تستش کنید در ادامه بیشتر درباره این فریمورک مینویسیم


ایجاد صفحه لاگین در فریمورک yii قسمت سوم

ایجاد یک model جدید به نام user

در فولدر models یک فایل جدید به نام User.php ایجاد کنید و کد زیر را داخل آن بنویسید

این قطعه کد توسط سایت رسمی فریمورک yii معرفی شده است

<?php

use yii\db\ActiveRecord;
use yii\web\IdentityInterface;

class User extends ActiveRecord implements IdentityInterface
{
    public static function tableName()
    {
        return 'user';
    }

    /**
     * Finds an identity by the given ID.
     *
     * @param string|int $id the ID to be looked for
     * @return IdentityInterface|null the identity object that matches the given ID.
     */
    public static function findIdentity($id)
    {
        return static::findOne($id);
    }

    /**
     * Finds an identity by the given token.
     *
     * @param string $token the token to be looked for
     * @return IdentityInterface|null the identity object that matches the given token.
     */
    public static function findIdentityByAccessToken($token, $type = null)
    {
        return static::findOne(['access_token' => $token]);
    }

    /**
     * @return int|string current user ID
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @return string current user auth key
     */
    public function getAuthKey()
    {
        return $this->auth_key;
    }

    /**
     * @param string $authKey
     * @return bool if auth key is valid for current user
     */
    public function validateAuthKey($authKey)
    {
        return $this->getAuthKey() === $authKey;
    }
}

در کد بالا یک تابع با نام tableName وجود دارد که “user” را return می کند شما به جای user باید نام جدول کاربران خود را جایگزین کنید معمولا اسم user یا users را به عنوان نام جدول اطلاعات کاربران انتخاب می کنند

نحوه لاکین یک کاربر در سایت :

کد هایی که در ادامه توضیح داده می شود را درون کنترلر های خود می نویسیم

$identity = User::findOne(['username' => $username]);

Yii::$app->user->login($identity);

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

حالا هر جا که نیاز داشتید id کاربر را دریافت کنید کافیه از کدی زیر استفاده کند

$id = Yii::$app->user->id;

کد بالا یا ایدی کاربر را میدهد یا اگر کاربر لاگین نباشد مقدار null می دهد

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

Yii::$app->user->logout();

استفاده می کنید

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


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

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

شرایط : 

اشنایی با php

اشنایی با mysql

اشنایی با laravel

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

@benyaminir

ایمیل : [email protected]


سفارش ساخت سایت

امروزه استفاده از فضای مجازی و سایت های اینترنتی در بین مردم گسترش یافته است . از طریق سایت های اینترنتی می توان خدمات بسیار گسترده ای را برای مشتریان خود فراهم نمود

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

کاربرد های سایت می تواند بسیار گسترده باشد برای مثالی دیگر یک موسسه آموزشی را در نظر بگیرید که می تواند آموزش ها و کلاس های مجازی و آزمون های آنلاین برگذار کند

تصور کنید برای ثبت نام و ارسال مدارک و پرداخت شهریه موسسه شما هیچ نیازی به حضور فیزیکی شخص نیست و افراد می توانند همه این عملیات را در سایت شما انجام بدهند

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

@Benyaminir

در طراحی سایت از فریمورک های مدرن و پرکاربرد مانند laravel و yii استفاده می شود

ما در زمینه های طراحی سایت , ساخت اپلیکیشن های مدرن در پلتفرم های ویندوز و mac و ساخت اپلیکیشن های اندروید و ساخت ربات های تلگرام فعالیت میکنیم پس هیچ گونه محدودیتی برای شما وجود نخواهد داشت 🙂

ایمیل : [email protected]


قسمت دوم ایجاد صفحه لاگین در فریم ورک yii

به نظر من یکی از موارد جذاب فریم ورک Yii روت و مسیریابی خودکار این فریم ورک هست در این آموزش تنظیمات اولیه  و کار با کنترلر ها  و نمایش پیام به کاربر را یاد میگیریم

اگر به فولدر فریم ورک مراجعه کنید می بینید فولدری به اسم config  می بینید وارد فولدر بشید و فایل db.php را باز کنید . در این فایل اطلاعات دیتابیس را وارد میکنیم

حالا لازمه کمی قسمت route را دستکاری کنیم به مثال زیر توجه کنید وقتی شما فریم ورک yii را نصب میکنید url های آن به این فرمت قابل فراخوانی هستند

http://hostname/index.php?r=site/index

اما ما میخواهیم url هایمان به این شکل مسیر دهی شوند

http://hostname/site/index

براین این کار داخل فولدر config فایل web.php را تغییر میدهیم و کد زیر را

'urlManager' => [
    				'class' => 'yii\web\UrlManager',
    				// Disable index.php
    				'showScriptName' => false,
    				// Disable r= routes
    				'enablePrettyUrl' => true,
    				'rules' => array(
    						'<controller:\w+>/<id:\d+>' => '<controller>/view',
    						'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
    						'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    				),
    		],

داخل ارایه components آن اضافه کنید و فایل را ذخیره کنید

حالا نحوه کار با کنترلر ها را برسی میکنیم وارد فولدر controllers می شویم و فایل SiteController.php را باز می کنیم می خواهیم تابعی بنویسیم که وقتی url زیر در مرورگر فراخوانی شد عبارت hello در صفحه مرورگر نشان داده شود

http://localhost/site/go

تابه زیر را به کنترلر اضافه می کنیم

function actionGo(){
 echo 'hello';
}

حال اگر به جای چاپ عبارت hello بخواهیم بک صفحه html را لود کنیم ازاین کد به جای echo استفاده می کنیم

return $this->render('say', ['message' =>'hello nitrocode.ir']);

در این کد فایل به اسم say در فولدر view لود می شود  . ما برای مثال یک پارامتر هم به صفحه html خود ارسال کردیم درواقع متغیری به اسم message و با محتوای hello nitrocode.ir را به فایل ارسال کردیم که در انجا می توانیم از این متغیر استفاده یا ان را به کاربر نمایش دهیم در آموزش های بعدی در این مورد بیشتر صحبت خواهیم کرد

برای ادامه آموزش روی لینک زیر کلیک کنید

قسمت سوم ساخت صفحه لاکین


قسمت 1 مقدمه شروع کار با فریم ورک Yii

چند وقتی هست که با فریم ورک Yii برای انجام پروژه ای کار میکنم و تصمیم گرفتم آموزش کار با این فریم ورک رو همراه با انجام پروژ خودم بنویسم ( اگر تازه کار هستید و می خواهید php رو تازه یاد بگیرید می تونید تو قسمت نظرات درخواست بدید تا آموزش مبتدی PHP رو هم بنویسیم ) برای درک این آموزش باید آشنایی اولیه با PHP داشته باشید .

اما چرا باید از فریم ورک Yii استفاده کنیم . فریم ورک های زیاد و خوبی برای زبان PHP ساخته شده و Yii یکی از فریم ورک های کامل و نسبتا سریع هست ( از لاراول سریع تر و منابع کم تری استفاده میکند )

در این آموزش ها ما به مرور یک سایت ساده شامل صفحه ثبتنام و ورود را خواهیم ساخت احتمالا اموزش ساخت ربات تلگرام به صورت حرفه ای هم آموزش داده خواهد شد

ابتدا باید فریم ورک را با استفاده از Composer نصب کنیم

اگر Composer روی سیستم شما نصب نیست روی نصب Composer کلیک کنید و آن را از سایت دانلود و نصب کنید

sudo composer create-project --prefer-dist yiisoft/yii2-app-basic basic

با اجرای دستور بالا در cmd ویندوز یا ترمینال لینوکس فریم ورک شروع به نصب میشه شما می توانید به جای کلمه basic اسم پروژه خودتون رو بنویسید برای مثال من اسم nitrocode.ir رو انتخاب میکنم : 

sudo composer create-project --prefer-dist yiisoft/yii2-app-basic nitrocode.ir

پس از نصب به محل نصب فریم ورک مراجعه کنید می بینید که یک فولدر به اسم nitrocode.ir ساخته شده 

بعد از نصب مسیر نصب فریم ورک رو توی مرورگرتون وارد کنید این آدرس برای من به این صورته

http://localhost/test/nitrocode.ir/web

** من فریم ورک رو داخل فولدری به اسم test نصب کردم این آدرس با توجه به محل نصب برای شما ممکنه متفاوت باشه **


تجربه کوتاهی به نام زبان go

Tags :

Category : موارد دیگر

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

در بنچ مارک های مختلف زبان Go به عنوان یکی از سریع تربن زبان ها معرفی میشه و این منو خیلی وسوسه کرد که یک روز را برای برسی این زبان اختصاص بدم 

من با node.js کارکردم که این زبان هم بعد زبان Go سرعت خوبی داره اما برنامه نویسی با زبان جاوا اسکریپت زمانی که کد های شما زیاد میشه کمی سخت میشه ( کد ها بسیار تو در تو میشن ) برای همین می خواستم زبان گو را هم مورد برسی قرار بدم

شروع کار با زبان گو انقد ها هم بد نبود کمی ساختار شکنی در زبان دیده میشه برای مثال شما در زبان جاوا برای تعریف یک تابع به این صورت عمل میکنید 

public int getCount(){
 return 0;
}

حالا توی زبان گو 

func getCount() int {
 return 0;
}

خب همین طور که مشاهده میکنید جای int با نام تابع جابه جا شده  😕 و از func برای تعریف تابع استفاده شده 

یکی از چیز هایی که در مرحله بعد روی مخ آدم راه میره این ویژگی زبان Go هست که شما از تمام متغییر هایی که تعریف میکنید باید استفاده کنید یعنی یا یک متغییر را نباید تعریف کنید یا اگر تعریف کردید باید ازش استفاده کنید مگرنه با پیغام خطا مواجه می شوید این ویژگی کمی کار تست کد هارا مشکل میکنه 

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

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

var get = JSON.parse( json );

get.result.list[0].id

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


آموزش استفاده از دیتابیس در اندروید

در ساخت برنامه های همیشه ممکن است نیاز داشته باشیم یک سری از اطلاعات را ذخیره و بازیابی کنیم در برنامه های اندروید راه حل منطقی استفاده از دیتابیس sqlite است .

در این آموزش نحوه استفاده آسان و سریع از این دیتابیس آموزش داده می شود برای شروع کار ابتدا کتابخانه KDB را که کار آن ساده کردن کار با دیتابیس هست را به پروژه خود اضافه میکنیم 

allprojects {
  repositories { 
   ...
   maven { url 'https://jitpack.io' }
  }
}


dependencies {
          ...
         implementation 'com.google.code.gson:gson:2.2.4'
         implementation 'com.github.parsgit:KDB:1.0.1'
	}

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

KDB.init(MainActivity.this,"db_name");

به جای عبارت db_name می توانید نام دلخواه خود را بنویسید

در مرحله دوم باید جدول های( table )  مورد نظر خود را ایجاد کنیم به مثال زیر توجه کنید

KDB.CreateTableQuery createTableQuery=new KDB.CreateTableQuery();
createTableQuery.Table("users")
                .Column("id").INTEGER().KEY_AUTO().Add()
                .Column("name").TEXT().Add()
                .Column("username").TEXT().NULL_ABLE(false).Add()
                .Column("age").INTEGER().DEFAULT(0).Add()
                .Build();

فرض کنید ما میخواهیم اطلاعات یک سری کاربر را که شامل نام و نام کاربری و سن می باشد را ذخیره کنیم پس با کد بالا جدولی به اسم users ایجاد میکنیم جدول users باید داری ستون هایی با نام های id , name , username , age باشد تا بتوانیم اطلاعات را در انها ذخیره کنیم 

توضیح : در این قسمت از کد

 Column("age").INTEGER().DEFAULT(0).Add

ستون age ( سن ) را ایجاد میکنیم و نوع آن را عدد صحبح ( INTEGER )  و مقدار پیش فرض را صفر در نظر گرفته ایم

تا اینجا ما یک دیتابیس به همراه جداول مربوطه ایجاد کردیم حالا نوبت آن رسیده که اطلاعاتی را در دیتابیس ذخیره کنیم برای ذخیره اطلاعات در sql از دستور INSERT استفاده میکنیم

KDB.query("insert into users (name,username,age) values ('beny','nitrocode.ir',24)") .exec();

// یا به صورت زیر عمل میکنیم

JsonObject values=new JsonObject();
        values.addProperty("name","beny");
        values.addProperty("username","nitrocode.ir");
        values.addProperty("age",24);

        KDB.query("insert into users (name,username,age) values (:name,:username,:age)",values)
                .exec();

با استفاده از کتابخانه KDB می توان مقدار پارامتر ها را به صورت جیسون ابجکت یا ارایه لیست ارسال کرد در قسمت دوم کد بالا ما یک متغیر جیسون آبجک با نام values ایجاد کردیم و مقادیر name , username , age را مقدار دهی کردیم .

روش سوم مقدار دهی پارامتر ها به صورت ارایه لیست هست که من خودم بیشتر از این روش استفاده میکنم در کد زیر می توانید نحوه کار را مشادهد کنید

ArrayList<String> params=new ArrayList<>();
        params.add("myname-test");
        params.add("abcd");
        params.add("24");

        KDB.query("insert into users (name,username,age) values (?,?,?)",params).exec();

در روش سوم باید ترتیب ورود اطلاعات را در نظر داشته باشد

SELECT ( بازیابی اطلاعات ثبت شده )

برای فراخانی اطلاعات از دیتابیس از دستور SELECT استفاده میکنیم چند روش مختلف SELECT را مشاهده کنید

JsonArray result = new JsonArray();

// دریافت تمام اطلاعات ثبت شده در جدول
result = KDB.query(" select * from users ").getJsonArray();

//دریافت اطلاعات یک کاربر بر اساس نام کاربری
ArrayList<String> params=new ArrayList<>();
params.add("nitrocode.ir");

result = KDB.query(" select * from users where username = ? ",params);

// دریافت اطلاعات کاربرانی که سنشان بیشتر از 20 سال است
ArrayList<String> params=new ArrayList<>();
params.add("20");

result = KDB.query(" select * from users where age > ? ",params);


 

UPDATE ( ویرایش اطلاعات )

در این مثال فرض میکنیم اطلاعات کاربری به نام علی در دیتابیس ما وجود دارد

// اطلاعات فرضی کاربر در دیتابیس ما
name      : ali
username  : ali156
age       : 18

که ما می خواهیم سن او را که در دیتابیس 18 ثبت شده به 30 تغییر دهیم

JsonObject values=new JsonObject(); values.addProperty("username","ali156"); values.addProperty("age",30);

KDB.query(" update users set age = :age where  username = :username",values).exec();

با اجرای کد بالا اطلاعات کاربر با نام کاربری ali156 جستجو می شود و سن او به 30 تغییر پیدا می کند

DELETE ( حذف اطلاعات )

ArrayList<String> params=new ArrayList<>();
params.add("ali157");

KDB.query(" delete from users username = ? ").exec();

این کد اطلاعات ali را حذف میکند


free open source Node js File Manager

در این پست به معرفی فایل منیجر Node js می پردازیم

زمانی که در حال ساخت ربات تلگرام مدیریت گروه با استفاده از node js بودم برای آپلود فایل های پروژه همین طور اجرا کردنو دیباگ کردن پروژه به مشکل برخوردم و توی اینترنت دنبال یه فایل منیجر مناسب برای پلتفرم node گشتم اما چیز مناسبی پیدا نکردم که هم از نظر امنیتی و کارایی مناسب کار من باشه برای همین خودم دست به کار شدم و یه فایل منیجیر ساختم

کار با این فایل منیجیر خیلی سادست و طراحی خوبی داره به نظر خودم

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

  1. آپلود ساده فایل ها به صورت Drag and Drop
  2. مشاهده فایل ها و فولدر ها با قابیلت حذف یا دریافت فایل ها
  3. مشاهده فایل های جاوا اسکریپت و قابلیت اجرای فایل های nodejs
  4. قابلیت استارت و متوقف کردن و مشاهده برنامه های درحال اجرا
  5. مشاهده لاگ ها و ارور های سرور

لینک : https://github.com/parsgit/node-nitroFileManager