گیک فارسی

نوشته های یک گیک فارسی از فعالیت ها ،‌ علاقه مندی ها و نقد هایش

حل مشکل ساعت اشتباه Windows Server حتی با تنظیم NTP و Timezone

نویسنده:
۲۳ تیر ۹۷

یکی از مشتری‌های قدیمی حسابی شاکی بود از اینکه چرا ساعت Server درست نیست و دچار مشکل شدن ، من که مطمئن بودم حتمی TimeZone گذاشتم و NTP هم تنظیم کردم که Automatic تاریخ و ساعت را Sync کنه و DST هم درست باید باشه بعد از Login و اطمینان از تنظیمات درست متوجه شدم ایشون درست میگن و چند دقیقه بعد از اینکه زمان درست Sync میشه ویندوز اتوماتیک زمان را بر میگردونه روی یک Timezone دیگری.

بعد از بررسی خیلی موارد که توی ویندوز بهش بر خورده بودم و تجربه داشتم ممکنه اختلال ایجاد کنه و حل نشدنش رفتم سراغ Google و با جستجو متوجه شدم روی سیستم‌های مجازی و VM گاهی تنظیمات به شکلی انجام میشه که سیستم عامل ساعتش را با مجازی ساز خودش Sync میکنه. البته برخی حالت‌های دیگه هم بود که مربوط به مشکلات سخت افزاری بود و من بعید میدونستم سخت‌افزار های چنین Data center معتبری مشکل داشته باشه.

بعد از کمی جستجوی بیشتر متوجه شدم باید NTP را تنظیم کنم که فقط از Manual Peer List زمان را Sync کنه و نه Domain Controller :

w32tm /config /manualpeerlist:"0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org",0x8 /syncfromflags:MANUAL
w32tm /config /update
net stop w32time
net start w32time
w32tm /resync /nowait

به این شکل مشکل حل شد و امیدوارم دیگه درگیر ویندوز نشم.

دسترسی به فایل‌های iphone از طریق اوبونتو (لینوکس)

نویسنده:
۱۲ خرداد ۹۷

امروز چک کردم و حجم فایل‌های گوشیم زیاد شده بود و میخواستم بریزمشون روی هارد اکسترنال ، خیلی شیک USB گوشی را زدم به لپ تاپ و یک دیالوگ اومد که به این کامپیوتر اعتماد داری ؟! بعد از زدن Trust از توی Filemanaer اومدم Monted Device که به نام IPhone بود را باز کنم و در نهایت تعجب خالی بود.

بعد از بررسی LOG ها و مطالعه روی اینترنت متوجه شدم یک ابزاری هست به نام ifuse که به فایل سیستم fuse روی IOS Device ها دسترسی میده. خودش و ملحقات روی Repository بود و با خوشحالی نصبش کردم و با دستوراتی که در ادامه میگم Pair هم شد ولی تا اومدم Mount بگیرم خطای زیر را میداد:

Failed to connect to lockdownd service on the device.Try again. If it still fails try rebooting your device.

بعد از بررسی بیشتر متوجه شدم نرم افزار‌های مورد نیاز نصب شده از روی Repository بروز نیستن و تغییراتی از نسخه ۱۰ IOS به بالا بوده که نرم‌افزار نصب شده امکان برقراری ارتباط را پیدا نمیکنه و باید از Source نصب کنم !!!

خوب یکی دو تا برنامه نبود و باید کلی زمان میگذاشتم که خوشبختانه با کمی جستجو متوجه شدم یک انسان با فرهنگ کل پروسه را توی Github توضیح داده (نسخه PDF آموزش) و با انجام دادن کل مراحل از جمله بخش bashrc. که خیلی مهمه (به زحمت ۵ دقیقه طول میکشه) به راحتی با چند تا دستور زیر کار راه افتاد.

حتماً یادتون نره وقتی گوشی را به Usb میزنید خود IOS ازتون میپرسه به این سیستم اعتماد دارین که باید Trust را بزنین.

حالا با دستورات زیر گوشی را pair و mount میکنیم :

idevicepair pair
mkdir -p ~/usr/mnt
ifuse ~/usr/mnt/

حالا میتونین با Filemanager محبوبتون فایل‌ها را منتقل کنین و برای unmount بزنین:

fusermount -u ~/usr/mnt

به همین راحتی بدون نیاز به ویندوز Storage گوشی iphone شما قابل دسترس هست.

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

نویسنده:
۱۹ بهمن ۹۶

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

هرچقدر حجم فایل‌ها بزرگ باشه برای دانلود مشکلات دو چندان میشه و امکان Resume نشدن و کلاً دانلود مجدد وجود داره ، اگه هم نیاز باشه فایل‌ها را روی سرویس های Cloud Storage مجزا از سرویس دهنده اصلی ذخیره کنیم ، محدودیت حجمی ارسال و دریافت فایل روی خیلی از خدمات وجود داره.

راه حل این هست که فایل‌های بزرگ را به قطعات کوچیکتر تقسیم کنیم و هر زمان بهشون نیاز داشتیم اون ها را به هم متصل و از فایل اصلی استفاده کنیم. برای این کار لینوکس ابزار بسیار خوبی داره به نام Split ، مثلاً با دستور زیر میشه یک فایل ۱۰ گیگابایتی را به ۱۰ فایل ۱ گیگابایتی تقسیم کرد:

split -b 1000M backup.zip backup.

این دستور فایل‌های ۱ گیگابایتی با نام هایی مثل backup.aa و backup.ab و … خواهد ساخت. حالا هر زمان احتیاج داشتیم فایل اصلی یعنی backup.zip را داشته باشیم با دستور زیر فایل اصلی را بازسازی میکنیم:

cat backup.a? > backup.zip

گیت (Git) و مشکل تغییر Permission ها و نیاز به Staged کردن دوباره فایل ها

نویسنده:
۱۴ بهمن ۹۶

من از Git و مخازنم (Repo ها) در مکان‌های مختلفی استفاده میکنم و Permission ها و تغییرات توی دسترسی فایل‌ها سیستم به سیستم متفاوت هست. اخیراً متوجه شدم برخی مواقع وقتی میخوام Pull کنم یکسری فایل که تغییری هم نداشتن به عنوان تغییر یافته نیاز به Staged شدن توسط Git گزارش میشه که خیلی این موضوع برام عجیب بود.

بعد از استفاده از git diff و خروجی که به صورت Old Mode و New Mode بود متوجه شدم به خاطر تغییر Permission هست که Git اعلام تغییر میکنه و میخواد فایل دوباره Staged بشه.

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

git config core.filemode false

اگه هم مثل من میخواین روی کل Repo ها اعمال بشه Global غیر فعال کنین :

git config --global core.filemode false

استفاده از فونت هایی که Style هاشون متفاوت و تو چند تا فایل ایجاد شده

نویسنده:
۶ آذر ۹۶

اگه طراحی وب انجام داده باشین قطعاً میدونین که توی چند سال اخیر کمتر طراح قابلی هست که از فونت‌ مزخرفی مثل Tahoma استفاده کنه و از وقتی مرورگر‌ها توانایی استفاده از وب فونت‌ها در قالب‌های CSS از طریق font-face@ را پیدا کرده‌اند عموما طراح بسته به کار خودش از فونت مورد نظرش استفاده میکنه.

یک مشکلی که شاید خیلی‌ها بهش بر خورده باشن این هست که برخی فونت‌ها برای استایل های Bold یا Italic و حتی ترکیب این دو Style ، فایل‌های متفاوت دارن ولی طراح چون نمیخواسته توی CSS بیاد و خودش را درگیر عنوان های متفاوت از font-face برای یک فونت بکنه عموما از نسخه Regular استفاده میکرده و تغییر Style را به عهده مرورگر میگذاشته !

خودم اخیراً توی پروژه ای نیاز به این کار داشتم و گفتم بیام یک پست بگذارم روی وبلاگ تا دوستان دیگه هم استفاده کنن:

@font-face {
	font-family: 'DroidNaskh';
	src: url('/assets/fonts/DroidNaskh-Regular.ttf') format('truetype');
	font-weight: normal;
	font-style: normal;
}
@font-face {
	font-family: 'DroidNaskh';
	src: url('/assets/fonts/DroidNaskh-Italic.ttf') format('truetype');
	font-weight: normal;
	font-style: italic;
 }
@font-face {
	font-family: 'DroidNaskh';
	src: url('/assets/fonts/DroidNaskh-Bold.ttf') format('truetype');
	font-weight: bold;
	font-style: normal;
}
@font-face {
	font-family: 'DroidNaskh';
	src: url('/assets/fonts/DroidNaskh-Italic-Bold.ttf') format('truetype');
	font-weight: bold;
	font-style: italic;
}

حالا کافیه از همون DroidNaskh استفاده کنیم و مرورگر به صورت خودکار خودش برای Style ها مختلف از فونت‌های متناظر استفاده خواهد کرد.

فایل‌های desktop. و روش ایجاد و استفاده از اونها

نویسنده:
۲۵ آبان ۹۶

اصولاً برنامه‌هایی که شما از طریق یک فایل deb یا دستورات apt نصب میکنید خیلی راحت از طریق Launcher میزکار شما قابل دسترسی هستند اما مواقعی هم پیش میاد که برنامه مورد استفاده شده به صورت اسکریپتی یا یک فایل اجرایی مستقل از داخل یک پوشه اجرا میشه و کلاً همه فایل‌های برنامه را از یک فایل آرشیوی خارج کردین و نصب هم در کار نبوده.

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

اینکه برای دسترسی به برنامه هر بار به پوشه مورد نظر بریم و برنامه را اجرا کنیم خیلی رو اعصابه و ساختن یک Link توی Desktop از برنامه هم همیشه بهترین گزینه نیست. در چنین مواردی توی لینوکس میشه از فایل‌هایی با پسوند desktop. استفاده کرد. مثلاً من برای نرم‌افزار Aptana یک فایل با نام aptana.desktop توی مسیر زیر میسازم:

~/.local/share/applications/aptana.desktop

و محتوای زیر را هم داخلش قرار میدم:

[Desktop Entry]
Name=Aptana
Type=Application
Comment=The world's most powerful open-source web development IDE
Categories=Development;
Path=~/Applications/Aptana_Studio_3/
Exec=~/Applications/Aptana_Studio_3/AptanaStudio3
Icon=AptanaStudio3

تنها نکته‌ای که در مورد اطلاعات بالا ممکنه گیج‌کننده باشه موضوع icon هست که خوب حالا میزکار از کجا متوجه بشه icon را از کجا پیدا کنه !؟ و جوابش هم گذاشتن فایل icon با پسوند مناسب (بهتره از png استفاده کنید) در مسیر زیر هستش:

~/.local/share/icons

بعد از ایجاد و ذخیره فایل و انتقال آیکون میتونین خیلی راحت از طریق Launcher یا هر Application Searcher ی که روی میزکارتون دارین برنامه را اجرا کنین.

استفاده از یک رزولوشن (Resolution) تعریف نشده برای Display

نویسنده:
۱۲ آبان ۹۶

امروز یک مانیتور ۲۲ اینچ را به یک سیستم وصل کردم و با تعجب بسیار متوجه شدم توی Display رزولوشن مورد نظر من یعنی ۱۰۸۰ × ۱۹۲۰ وجود نداره ! خوب بار اول بود با چنین مشکلی روبرو میشدم و بعد از کمی جستجو به یک Wiki رسیدم که راه حل را ارائه کرده بود و بعد از تست و پاسخ گرفتن تصیمیم گرفتم توی وبلاگ یک پست را بهش اختصاص بدم.

شما ابتدا باید Resolution Mode مورد نظر را به دست بیارین (mode را برای ۱۹۲۰ پیکسل افقی و ۱۰۸۰ پیکسل عمودی با Refresh Rate برابر با ۶۰ هرتز نیاز داریم):

sudo cvt 1920 1080 60

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

Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

درمرحله دوم با دستور xrandr این mode را به سیستم شناسایی میکنیم:

sudo xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

حالا نیاز داریم تا Mode ثبت شده را به نمایشگر مورد نظر اضافه کنیم ، چون ممکنه نام نمایشگر را ندونیم از دستور زیر استفاده میکنیم و نام نمایشگر را به دست میاریم (که مثلاً برای سیستم من DP1 هستش):

sudo xrandr -q

اکنون که نام نمایشگر را داریم خیلی ساده با دستور زیر mode را به نمایشگر اضافه میکنیم:

sudo xrandr --addmode DP1 1920x1080_60.00

در آخر هم توی تنظیمات Display میتونیم رزولوشن ایجاد شده را انتخاب و فعال کنیم.

در وصف سریال Halt And Catch Fire

نویسنده:
۱ آبان ۹۶

از اون دسته از آدم‌هایی هستم که اگه دوستان چند صفحه از وبلاگم را بخونن متوجه میشن اهل سریال هستم و سلیقه نسبتاً سختگیرانه‌ای هم در انتخاب سریال دارم. وقتی سال ۹۴ سریال Halt And Catch Fire را برای بار اول دیدم به خاطر موضوع سریال و نزدیکی بسیار زیاد شخصیت‌ها و روایت اون به زندگی و کار خودم به شدت عاشقش شدم جدا از نقد‌های اسکریپتی و بازی کاراکترها و تولید و فیلمبرداری و …

توی این ۴ فصلی که AMC سر این سریال پایداری کرد و با وجود مخاطب محدودش باز هم به تولیدش وفادار بود شخصاً خیلی مسرور بودم تا اینکه متأسفانه فصل ۴ به عنوان آخرین فصل ارائه شد و لذت در کنار شخصیت‌ها و حال و هوای سال‌های طلایی ۸۰ و ۹۰ علوم کامپیوتر و پیشرفت‌های اون سال‌ها از سال آینده دیگه وجود نخواهد داشت.

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

حرف حساب در مورد PHP و Framework ها و Design Pattern ها

نویسنده:
۲۱ مهر ۹۶

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

میخوام شما را لینک بدم به مقاله‌ای که حرف‌هایی که میزنه حرف دل منه و به نظرم خیلی مهمه برای هر برنامه نویس PHP که این مقاله را بخونه. پس برای خوندنش عجله کنید و امروز و فردا نکنید :

لینک به مطلب اصلی
دانلود نسخه PDF ی که من برای اولین بار خوندمش برای حفظ سند

توهم بزرگ استقلالی‌ها و پرسپولیسی‌ها در آسیا

نویسنده:
۵ مهر ۹۶

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

نکته اصلی اینجاست که قهرمانی های استقلال و حضور در فینال باشگاهی آسیا مربوط به دوران «مسابقات باشگاهی قهرمانی آسیا از ۱۹۶۷ تا ۱۹۷۲» و «جام باشگاه‌های آسیا از ۱۹۸۵ تا ۲۰۰۲» میشه.

حالا وقتی موضوع جالبتر میشه که متوجه باشیم قهرمانی استقلال در سال ۱۹۷۰ (پهلوی) کلاً با ۴ تا بازی بوده !!! و یا قهرمانی در سال ۱۹۹۰ (جمهوری اسلامی) با ۷ تا بازی بوده !!! در‌ واقع هیچکدوم از این مسابقات حالت لیگ نداشتند و تیم‌ها خیلی کم بودن و مثلاً در قیاس با سال ۲۰۱۳ که استقلال سوم شد این تیم ۱۲ بازی انجام داد.

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

پرافتخار ترین تیم ایران در لیگ قهرمانان آسیا سپاهان هست که نائب قهرمانی در سال ۲۰۰۷ داره و در جام باشگاه های جهان هم شرکت کرده. ذوب‌آهن هم دیگر تیم ایرانی هستش که در سال ۲۰۱۰ نائب قهرمان شده.