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


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

Native App

Web App

Hybrid App

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

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

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

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

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

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

۱۳۴۸/۱۰/۱۱ || in category : اندروید

چ خبر ؟ راستی چیتا چی شد ؟


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

دقیقا الان با این سوال این حس بهم دست داد.

چیتا فریم ورک چی شد . دارم روش کار می کنم همین دو روز تعطیل رو داشتم یه سیستم احراز هویت (چ اسم مخوفی) براش می نوشتم .... گریدش رو کامل کردم و بخش وب سرویس بر اساس rest   رو براش راه انداختم و چندتا سایت باهاش زدم ولی هنوز وقت نکردم اون رو جمع کنم و یه ورژن دیگه بدم بیرون ... پس با این حساب هنوز کاری نکردم که بشه اون رو ارائه داد ... مشکل اساسی و رو اعصاب اکتیو رکوردیه که واسه دیتابیس روی چیتا ست کرده بودم و الان داره بعضی ها خطاهای مهلت میده و دارم دنبال جایگزین می گردم که خب اگه پیدا بشه کل فریم ورک رو باید یه خونه تکونی اساسی کنم که الان اصلا وقتش نیست

به اپ رو که درایم حدود ۴ ماه روش کار می کنیم دیشب تموم شد ... خبر تموم شدنش خوشحالم نکرد چون واقعا باید توی ۱٫۵ ماه تموم میشد ... بگذریم ... اخر هفته سایتش رو که با چیتا نوشتم میارم بالا و اپ رو می زاریم توی کافه بازار که امیدواریم جواب بده

 

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

۱۳۴۸/۱۰/۱۱ || in category : امنیت

مهاجرت شدید از مجنتو ۱ به مجنتو ۲


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

اون تغییرایی که من دیدم اینا بون ...

۱ − استفاده از انگولار جی اس (که گاها خیلی هم رو اعصابه)

۲− پیاده کردن کامپوزر(هنوز سراغ این بخش نرفتم)

۳− دیتابس تقریبا همون دیتابیس سابقه (ساختار جدولها فرقی نکرده)

۴−استفاده که نیم اسپیس ها (که توی مجنتو ۱ با اندرلاین(ـ) اونها رو پیاده کرده بودن و به اندازه لازم رو اعصاب بود)

۵− اضافه شدن کانتکس contex (کانتکس رو فضای کاری فرض کنین ولی فک کنم هنوز شعور php  به درک کانتکس نرسیده و بازم دولوپرها دارن چند قدم جلوتر از زبان برنامه نویسی حرکت می کنن )

۶-نیاز شدید به پی اچ پی ۷.۰۲ (که خیلی رو اعصابه ... منکه هر دو مجنتو رو باید دولوپ کنم باید دائم بین ۵٫۶ و ۷٫۰۲ سویچ کنم)

۷−اضافه شدن یه شل واسه کامپایل و اپگرید ماژول ها

نکته : یک روز کامل رو درگیر این مسئله بودم ... وقتی توی کانستراکتر(__constracter()) اگه درست نوشته باشم...یه کلاسی رو لود می کنید بعدش حتما باید کامپایل کنید با این دستور  php bin/magento setup:di"compile ... منکه کل روز رو درگیر این بودم که بفهمم چرا سیستم یهو از کار می افته و دیگه جواب نمیده

 

و مسايلی که بعد بیشتر در موردشون می نویسیم

راستی اگه مثل من از پی اچ پی ستورم استفاده می کنید یه اپدیتی بزنید بد نیست ...الان میشه چندتا پروژه رو کنار هم کار کرد ... قبلا واسه  سویچ بین پروژه ها باید یه بار دیگه پروژه رو رن می کردیم

۱۳۴۸/۱۰/۱۱ || in category : مجنتو

مشکل پاپ اپ های System program problem detected


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

راه حل اول پوشه ی کرش رو توی var  خالی کنید تا الارت های کرش قبلی پاک بشن

sudo rm /var/crash/*

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

sudo gedit /etc/default/apport

مقدار enabled  رو به صفر تغییر بدید و ذخیره کنید.

۱۳۴۸/۱۰/۱۱ || in category : دنیای لینوکس

درست کردن پرمیشن ها به صورت دسته جمعی در اوبونتو


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

سر صبحی داشتم پرمیشن یه فایلی رو تغییر میدادم (توی لمپ) که اشتباهی زدم و کل پرمشنهای پوشه ی lamp  رو عوض کردم .... به همین راحتی ... هر سایتی رو روی لوکال هاست (سرور داخلی) می زدم ارور 404  میداد ...

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

 

chmod 775 /opt/lampp/htdocs

راه حل رو تابع find بش پیدا کردم ...اول باید توی دایرکتوری مورد نظر کل فایل ها رو پیدا کنیم و بعد هم بیاییم پرمیشن رو ست کنیم

 

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
find /opt/lampp/htdocs -type f -exec chmod 644 {} \;

۱۳۴۸/۱۰/۱۱ || in category : دنیای لینوکس

mvc در php


بهتره جمله ام رو اینطوری شروع کنم : شاید دارم اشتباه می کنم

 

طرح های زیادی رو در مورد ام وی سی توی نت دیدم و نگاشون کردم و این وسط هم چند سالی هست که دارم باهاش سرو کله می زنم ... بعد از طراحی فریم ورک چیتا هم عمیقا به فکر فرو رفتم که این طرح ام وی سی که توی اکثر فریم ورک ها داره پیاده میشه ناقصه ... مثلا توی yii  وقتی از $this  استفاه می کنیم داریم به متدهای کنترلر اشاره می کنیم و این با ام وی سی در تناقضه ... بعضی ها هم می گن که ام وی سی بر اساس هر زبان برنامه نویسی باید یه سری تغییرات داشته باشه که خب اینم تقریبا قابل قبوله ...

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

در مورد ام وی سی های پیاده شده هم همینطور

خب یه بار ام وی سی رو بررسی می کنیم :

کنترلر : کنترلرها کلاس هایی هستند که به عنوان مغذ سیستم کار می کنن ... اونها داده ها رو از یوزر می گیرن و با استفاده از مدل اون ها رو پردازش می کنن و بعد هم توی ویو به یوزر نمایش می دن

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

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

خب این کلیت کار ام وی سی بود ... با این حساب $this ‌نباید توی ویو به هیچ متدی اشاره کنه .

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

Helper : هلپرها یه سری کلاس هستن که پردازشهای مشترک بین مدل ویو و کنترلر رو انجام میدن و اکثرا هم برای کم کردن حجم کد استفاده میشه ... توی مجنتو هلپرها به توسط مدل و ویو و کنترلر قابل دسترسی هستن ...

توی فریم ورک چیتا هلپرها رو ایجاد کردم و به راحتی میشه اون ها رو از طریق کنترلر و یا شی اصلی فریم ورک chita::hepler فراخوانی کرد و از اون ها استفاده کرد .

در اینده در مورد بلاک هم می نویسم :)

 

۱۳۴۸/۱۰/۱۱ || in category : پی اچ پی php

kazma رو عشقه


سلام

چند وقت پیش که (حدود 10 ماه پیش) دوره اندروید رو ضبط می کردم . واسه این کار روی اوبونتو از نرم افزار Kazam استفاده می کردم . حالا بعد از مدتها بازم یه سری اموزش دارم درست می کنم و این بار سراغ چند نرم افزار رایگان و البته اپن سورس رفتم ولی هیچکدوم به خوبی Kazam نبودن ...

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

روش نصب (ها) :

می تونید وارد این سایت بشید و نسخه ای از اون رو دانلود کنید( توی مخزن ها پیداش نکردم)

سایت مذکور http://kazam.en.uptodown.com/ubuntu

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

sudo add-apt-repository ppa:kazam-team/stable-series

sudo apt-get update

sudo apt-get install kazam

۱۳۴۸/۱۰/۱۱ || in category : متفرقه

اشتباه بودن کپتچا برای بار اول در yii2


سلام

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

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

اینکه مشکل اساسی از کجاست رو با توجه به کمبود وقت سراغش نرفتم . اومدم با یه کد جاوا اسکریپت اون رو درست کردم ... این طور که بعد از 5 ثانیه یه رویداد کلیک ایجاد بشه و کلیک روی کپتچا رو شبه سازی کنه ( اسم دقیقش رو نمیدونم :)‌)

کد :

 
<script type="text/javascript">
 
    setTimeout(function ()
    {
        jQuery('#comment-captcha-image').click();
    },5000)
</script>

۱۳۴۸/۱۰/۱۱ || in category : فریم ورک yii

از مجنتو اموختم


داستان رو بهتره اینجوری شروع کنم

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

این داستان واسه قبل هجرت غمگینم به تهرانه ... و بعد مهاجرت کردم ... تخصصم روی yii  بود و منتنفر از لاراول و با این حس و حال دوست داشتم یه کاری مرتبط با تخصصم پیدا کنم ولی جور نشد ... استخدامی یه شرکتی بود و منم رفتم باهاشون مصاحبه کردم و انگار خوششون اومده بود منتها مشکل این بود که با مجنتو کد می زدن ... من تا قبل اون روز حتی اسم مجنتو رو هم نشنیده بودم . رک و راست بهشون گفتم که بار اوله دارم اسمشو می شنوم ولی خب میتونم اون رو یاد بگیرم و باهاش کد بزنم ... و اونها هم یه فرصت 1 ماهه بهم دادن تا ببینن می تونم یا نه و من تونستم ... قبل یک ماه اولین ماژول ها رو نوشتم و شروع کردم به کد زدن واسه مجنتو و این شروع یه اتفاق خوب بود . شرکت جای خوبی بود و محیظش دوست داشتنی بود و از بودن در اونجا لذت می بردم و این وسط تجربه کد زدن با مجنتو هم دستم اومده بوده و به سرعت داشتم پیش میرفتم. مجنتو یه سیستم فروشگاه ساز بر پایه فریم ورک زند هستش ...ولی خب نقطه قوتش در طراحی اونه ...گرچه گفتم که کسایی که مجنتو رو طراحی کردم علاقه خاصی به چرخوندن لقمه دور سر قبل از خوردن داشتن ولی این چیزی از ارزش های مجنتو کم نمیکنه ... طراحی خاصش استفاده از xml  برای فایل های کانفیگه که به نظرم از همه جالبتره ... طرح خاص قالبش که ترکیبی از فایل های xml و  phtm و بلاک هاست ... و بعد از اون پیاد کردن نیم سپیس ها که اون هم در نوبه خودش جالبه و با توجه به این که توی پی اچ پی قدیم(فک کنم 5.3) خبری از نیم سپس نبوده این نقص رو به خوبی جبران کردن ... بخش مدیریت بسته های نرم افزاری که فک کنم قدمتش از کامپوزر بیشتر باشه ... طراحی خیلی جالب دیتابیش

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

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

 

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

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

۱۳۴۸/۱۰/۱۱ || in category : متفرقه

سلام chita framework


سلام

حدود یه ماه پیش شروع کردم به نوشتن یه فریم ورک ... توی 48 ساعت اول اسکلت کلی فریم ورک رو سر هم کردم ...روتر رو ساختم و کلاس های اولیه رو واسه چرخه کاری فریم ورک نوشتم ....

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

دارم سعی می کنم یه کد جنرتور واسه فریم ورک بسازم که کار کدزن رو راحت تر کنه و بشه سریع باهاش سایت رو بالا اورد ... و فک کنم بعد این فریم ورک اماده ارائه عمومی بشه ....

توضیحات بیشتر رو بعدا همراه با توضیح اینکه مجنتو چه تاثییری روی طراحی فریم ورک م داشته میدم ...

به امید حق

 

۱۳۴۸/۱۰/۱۱ || in category : متفرقه