ترمیم زیرنویس‌های نامفهوم با سی‌شارپ

subfixerمن دوست دارم فایلای ویدیویی رو روی سیستم اصلی بریزم و اکثرا با تلویزیون یا لپتاپ تماشا کنم. مشکل اینه که هر برنامه ای یک تعبیر پیشفرض از زیرنویس داره مثلا VLC که روی لپتاپ استفاده می‌کنم تنظیم شده روی UTF-8 یا اکثر تلویزیون‌ها همیشه windows-1256 و UTF-8 رو قبول دارن. اما برنامه (هایی) که عزیزان مترجم ازش استفاده می‌کنن همیشه یا خروجیش UTF-16 هست و یا WINDOWS-1256 که این تداخل باعث می‌شه گاهی وقتا زیرنویس خرچنگ قورباقه نمایش داده بشه.

برای همین می‌خوام سناریوی یک برنامه ساده با سی شارپ رو توضیح بدم که کارش ترمیم زیرنویس‌های نامفهوم و هماهنگ کردن اسم فایلها با اسم ویدیوهاست (توی تصویر مشخصه) – فرض کنید یک سریال ۲۲ قسمتی رو توی چند ثانیه میشه ترمیم کرد درصورتی که حالت عادی آدم خسته میشه از بس اسم‌ها رو تغییر میده بعد سایت به سایت دنبال ترمیم کننده می‌گرده و …

بیشتر بخوانید ←

راهندازی مودم huawei e3372 روی لینوکس

huawei e3372
مدتی پیش خیلی دنبال راه حل برای راهندازی این مودم گشتم اما چیزی پیدا نکردم برای همین تصمیم گرفتم حالا که راه حل رو پیدا کردم اون رو با بقیه هم به اشتراک بذارم.

درواقع این مشکل فقط برای کاربرانی که از معماری ۶۴ بیتی استفاده می‌کنن پیش میاد و علتشم اینه که کتابخانه‌های مورد نیاز برای این مودم ۳۲ بیتی هستن.

اول از همه وقتی که مودم رو وصل می‌کنید USB storage فعال می‌شه و شما می‌تونید محتویات داخل حافظه این مودم رو ببینید که در اونجا پوشه ای به اسم linux_mbb_install وجود داره که شما باید این پوشه رو روی هارد خودتون کپی کنید (از این مرحله به بعد بهتره مودم رو جدا کنید)

حالا تحت هر شرایطی که شده باید سیستم رو به صورت موقت به اینترنت وصل کنید (من از هات اسپات موبایل استفاده کردم) و کتابخانه‌های lib32stdc++6 و libusb-0.1-4:i386 رو دریافت کنید. من از توزیع KDE NEON استفاده می‌کنم که هسته اصلیش اوبونتو هست پس برای نصبش از دستور زیر استفاده کردم.

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

حالا دوباره مودم رو وصل کنید و لذت ببرید 🙂

استفاده از electron بعنوان رابط کاربری برای پایتون

electron image
همه حداقل یک بار اسم electron به گوششون خورده. ایده این که «همه چیز یک وبسایت است» خیلی جذاب به نظر میاد. اما جاوا اسکریپت فعلی نمی‌تونه فراتر از یک حدی رشد کنه چیزایی مثل Heavy sandboxing، ارتباط با قطعات سخت افزاری و حتی توی بحث سوکت، IMAP و SMTP هم محدودیت‌های خودش رو داره.

اما پایتون از این طرف یک زبان برنامه نویسی با پتانسیل بالاست که در مقایسه با API های nodeJS می‌شه گفت پایتون بدون محدودیته ولی وقتی که بحث سر GUI باشه اشک توسعه دهنده رو در میاره. برای همین داشتم به این فکر می‌کردم که چطور از الکترون به عنوان رابط کاربری استفاده کنم درحالی که هسته اصلی برنامه با پایتون باشه ؟

بیشتر بخوانید ←

نصب composer روی ظرف رسمی php

docker-thumbnail

اگر شما هم از داکر برای ایجاد محیط توسعه استفاده می‌کنید شاید براتون این سوال پیش اومده باشه که چرا composer روی ظرف رسمی PHP نصب نیست؟

دلایل زیادی برای نصب نکردنش وجود داره مثلا این ظرف هدفش بهینه بودن برای استفاده در محیط محصول هست. از طرفی composer رو نیاز نداریم که توی محیط محصول نصب کنیم چون توی اون محیط برنامه نهایی درحال اجراست.

به هر حال در مورد این مسئله یک بحث طولانی شده و نتیجه هنوز هم نامعلومه. شاید در آینده بعنوان اسکریپت اضافه بشه تا مثل helper ها ازش استفاده کرد.

اما اگر هنوز هم نیاز دارید تا اون رو نصب کنید دستورات زیر رو به dockerfile خودتون اضافه کنید.

\ RUN set -x
\ curl -sS https://getcomposer.org/installer | php &&
mv composer.phar /usr/local/bin/composer &&

من خودم از توزیع اوبونتو ۱۶.۰۴ استفاده می کنم و ترجیه دادم که composer رو به صورت گلوبال روی سیستمم نصب کنم. برای این کار کافیه فقط php5.6-cli و php5.6-curl رو نصب کنم.

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-install php5.6-curl php5.6-cli
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer &&

اگر روی ویندوز از داکر استفاده می کنید روش اول بهتره و اگر میخواید composer رو به صورت گلوبال روی ویندوز داشته باشید باید باینری php برای ویندوز رو نصب کنید و بعد composer رو برای ویندوز دانلود کنید (چون این ابزار به php.exe نیاز داره)

نصب LAMP به صورت خودکار

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

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

ترمیم زیرنویس های نامفهوم به صورت گروهی

bash

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

برای استفاده از این اسکریپت قبلش باید پکیج uchardet رو دریافت کنید.
sudo apt install uchardet

کافیه اسکریپت رو توی دایرکتوری زیرنویس ها قرار بدید و با دستور bash subfixer.sh اون رو اجرا کنید.
سعی کردم با دستور file -bi کار تشخیص encoding زیرنویس رو انجام بدم اما نمیتونست windows-1256 رو تشخیص بده. البته ناگفته نماند که uchardet هم درست تشخیص نمیده و فکر میکنه که x-mac-cyrillic هست. حداقل این پکیج بقیه رو درست میگه و برای اونی هم که اشتباه میگه میشه یه شرط گذاشت و تصحیح کرد. (خط ۱۱)

نکته دیگه اینکه دستور iconv نمیتونه فایل هایی که توی اسمشون فضای خالی وجود داره رو باز کنه. برای همین خط ۶ اسم فایل ها رو تغییر میده و فضای خالی رو با زیر خط (underscore) جایگزین میکنه.

معرفی Blisk مرورگری برای توسعه وب

blisk

چه شما وبسایت رو طراحی کنید و چه اون رو آزمایش کنید، درنهایت از مرورگری استفاده می کنید که ساخته شده برای «دیدن» وب نه «طراحی» اون. البته همه مرورگر های مدرن ابزاری برای توسعه وب دارن که میشه باهاش سورس کد رو دستکاری کرد، کوکی ها رو چک کرد، خطا‌های درحال اجرا رو مدیریت کرد و …

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

بیشتر بخوانید ←

سیر تا پیاز توسعه وردپرس با VVV روی ویندوز

لوگوی Vagrant

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

یکی از راه حل های جایگزین برای رفع این مشکل نصب Vagrant و استفاده از Box هاشه که بحث امروزه. راه دیگه هم که شاید سختی بیشتری داره استفاده از Container های ابزاری به نام Docker هست که نه تنها توی زمینه توسعه وردپرس بلکه توی توسعه خیلی چیزای دیگه سنگ تموم گذاشته.

بیشتر بخوانید ←

تغییر اندازه و برش تصاویر انیمیشنی در php

تغییر اندازه و برش تصاویر با imagick

عمدتا هروقت صحبت از تغییر اندازه و برش تصاویر توی php میشه اکثرا یا GD رو انتخاب می‌کنن و یا imagick رو.

معیاری که باعث میشه GD بیشتر استفاده بشه اینه که از نسخه ۴.۳ به بعد همراه خود php نصب میشه. اما imagick برای اینکه جادوش اثر کنه نیاز به مقداری کانفیگ داره که به همین دلیل اگر از هاست اشتراکی استفاده می‌کنید امکان استفاده از اون رو ندارید.

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

بیشتر بخوانید ←

SQL یا NoSQL مسئله این است !

NoSQL

توی این مطلب قرار نیست بگم NoSQL خوبه، قیمت سرور ارزون تر در میاد و از این جور مقایسه‌ها؛ بلکه می‌خوام کمی درمورد این که “چطور بفهمیم که برای پروژه باید از NoSQL استفاده کنیم یا نه” صحبت کنم.

خب SQL طبیعتا برای موجودیت ها و مقادیری خوبه که تعداد [فیلد ها] و گستردگی اونها دقیقا مشخص شده.
ولی درکنارش NoSQL برای مواقعی مناسبه که موجودیت ها و تعداد فیلد ها دسته بندی مشخصی نداره مثلا شبکه های اجتماعی و سیستم های آمارگیری.

یا به تعبیر دیگه تفاوت کلیدی پایگاه داده های رابطه ای (RDBMS) و NoSQL توی نحوه پاسخ دادن به مشکلاته. توی RDBMS برای هر مشکلی فقط یک راه حل وجود داره (جدول بساز) ولی NoSQL راه حل‌‎های بیشتری برای حل مشکلات ارائه میده (document, key-value, graph).

بیشتر بخوانید ←