<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>প্রাথমিক স্তরের টিউটোরিয়াল Archives &bull; Tuts by Mayeenul Islam</title>
	<atom:link href="https://mayeenulislam.github.io/tuts/category/tuts-level/primary-level-tuts/feed/" rel="self" type="application/rss+xml" />
	<link>https://mayeenulislam.github.io/tuts/category/tuts-level/primary-level-tuts/</link>
	<description>Technology Tutorials by Mayeenul Islam</description>
	<lastBuildDate>Sat, 21 Jan 2023 15:36:01 +0000</lastBuildDate>
	<language>bn-BD</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.1</generator>

<image>
	<url>https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/08/cropped-tuts-nano-32x32.png</url>
	<title>প্রাথমিক স্তরের টিউটোরিয়াল Archives &bull; Tuts by Mayeenul Islam</title>
	<link>https://mayeenulislam.github.io/tuts/category/tuts-level/primary-level-tuts/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>অ্যাডমিন প্যানেলে নিজস্ব $wp_query&#8217;র জন্য পেজিনেশন</title>
		<link>https://mayeenulislam.github.io/tuts/custom-pagination-admin-panel-wp-query/</link>
					<comments>https://mayeenulislam.github.io/tuts/custom-pagination-admin-panel-wp-query/#respond</comments>
		
		<dc:creator><![CDATA[মঈনুল ইসলাম]]></dc:creator>
		<pubDate>Wed, 01 Jun 2016 13:44:21 +0000</pubDate>
				<category><![CDATA[ওয়ার্ডপ্রেস টিউটোরিয়াল]]></category>
		<category><![CDATA[ওয়েব ডেভলপমেন্ট টিউটোরিয়াল]]></category>
		<category><![CDATA[জ্ঞান-স্তরভিত্তিক টিউটোরিয়াল]]></category>
		<category><![CDATA[থিম টিউটোরিয়াল]]></category>
		<category><![CDATA[প্রাথমিক স্তরের টিউটোরিয়াল]]></category>
		<category><![CDATA[প্লাগইন টিউটোরিয়াল]]></category>
		<guid isPermaLink="false">https://mayeenulislam.github.io/tuts/?p=1027</guid>

					<description><![CDATA[<p> [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/custom-pagination-admin-panel-wp-query/">অ্যাডমিন প্যানেলে নিজস্ব $wp_query&#8217;র জন্য পেজিনেশন</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>অ্যাডমিন প্যানেলে একটা পাতায় (menu_page কিংবা submenu_page হতে পারে) একটা <code>WP_Query()</code> চালিয়ে কিছু তথ্য নিয়ে এসেছি। টেবিল আকারে তথ্যগুলো দেখিয়েছিও। এবং পেজিনেশনও করেছি। কিন্তু লক্ষ করলাম, পেজিনেশন কাজ করছে না। অনুসন্ধান করে দেখলাম Christine Cooper-ও একই সমস্যায় পড়েছিলেন এবং তিনি একটা সমাধানও বের করেছেন Milo&#8217;র পরামর্শকে কাজে লাগিয়ে। সমাধানটা দারুণ, এবং আমার সমস্যারও সমাধান দিলো। কিন্তু আরো কিছু বিষয়ের দরকার হয়ে পড়েছিল, তাই আমি সেটাতে আরো কাজ করে আপনাদের জন্য হাজির করলাম একটু গোছানো একটা সমাধান হিসেবে। আপনারা এটাকে আরো গুছিয়ে নিতে পারেন নিজের মতো করে।</p>



<h3>আসলে কী হচ্ছে, কেন হচ্ছে?</h3>



<p>এই ব্যাপারটা আগে জানা দরকার। কপি-পেস্ট সবাই করতে পারে, কোড বুঝে নিয়ে তা ব্যবহার করাটাই প্রকৃত প্রোগ্রামারের কাজ হওয়া উচিত। যা জানা গেল, তা হলো,</p>



<span id="more-1027"></span>



<p> আমাদের পাতায় কোনো <code>$wp_query</code> অবজেক্ট লোড হচ্ছে না। সেকারণে Query argument-ও যোগ হচ্ছে না ইউআরএল-এ। তাই আমাদের বহুল পরিচিত পেজিনেশন সংক্রান্ত কন্ডিশনাল:</p>



<p><code>$paged = get_query_var('paged') ? get_query_var('paged') : 1;</code></p>



<p>এখানে কাজ করছে না, কারণ <code>get_query_var()</code> আসলে কিছু পাচ্ছে না (কুয়েরি আর্গুমেন্ট তো যোগই হচ্ছে না, পাবে কিভাবে)। সেজন্য ইউআরএল-এ <code>&amp;paged</code> প্যারামিটারের ভ্যালু পাবার জন্য আমরা <code>$_GET</code> মেথড ব্যবহার করতে বাধ্য হচ্ছি, যেমনটা Milo শিখালেন।</p>



<p>এবারে সব পেজিনেশনের জন্য যেমন কিছু ছোটখাটো বিষয় বানিয়ে নেয়া লাগে এখানেও তাই করা হচ্ছে, আমরা বলে নিচ্ছি:</p>



<p><code>$nextpage = $paged + 1;</code></p>



<p>আর আমরা আগের পাতা দেখানোর জন্য তৈরি করেছি:</p>



<p><code>$prevpage = max( ($paged - 1), 0 );</code></p>



<p>খুব সোজা, পরের পাতা মানে ১ যোগ, আর আগের পাতা মানে ১ বিয়োগ। কিন্তু এভাবে যাতে নেগেটিভ মানে না চলে যায়, তাই আমরা পিএইচপি&#8217;র <code>max()</code> ফাংশন ব্যবহার করেছি।</p>



<p>ধরা যাক আমাদের কুয়েরিটা এরকম:</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/2b7fd2d092bca527e521eb51079dfc72">Gist</a>.
</div></figure>



<p>এখানে আমরা posts_per_page প্যারামিটারে ওয়ার্ডপ্রেসের নিজস্ব Settings &gt; Reading-এ সেট করা পাতা-প্রতি পোস্টের সংখ্যা ব্যবহার করছি। আমরা তাই বারবার কুয়েরি না করে ফাংশনেও এই সংখ্যাটা নিয়ে নিচ্ছি। যদি আপনার ক্ষেত্রে ব্যতিক্রম কিছু থেকে থাকে, আপনি চাইলে পেজিনেশন <code>$posts_per_page = 5</code> এরকম করে আপনার ভ্যালুও পাস করে দিতে পারেন। যদি ফাংশনে <code>$items_per_page</code>-এ কোনো ভ্যালু না দেয়া হয়, তাহলে আমরা ওয়ার্ডপ্রেসের ডিফল্টটা গ্রহণ করেছি ফলব্যাক হিসেবে। লক্ষ রাখুন, <code>$paged</code> প্যারামিটারে <code>get_query_var()</code>-এর বদলে <code>$_GET</code> মেথড ব্যবহার করেছি।</p>



<p>এবারে এই হচ্ছে আমাদের পেজিনেশন ফাংশন:</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/2b7fd2d092bca527e521eb51079dfc72">Gist</a>.
</div></figure>



<p>আর, এই ফাংশনকে আমরা এভাবে ব্যবহার করতে পারবো:</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/2b7fd2d092bca527e521eb51079dfc72">Gist</a>.
</div></figure>



<p>এখানে আমাদের মতো করে আমরা পেজিনেশন প্যারামিটারগুলো পাঠাতে পারছি। এবং সর্বোপরি, আমরা কততম পাতায় আছি, Next Page, Previous Page, Last Page, First Page ইত্যাদি বোতামও পাচ্ছি, প্যাজিনেশনকে প্রয়োজনমতো ব্যবহার করার জন্য।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/06/admin-page-wp-query-custom-pagination-tutsnano.png"><img decoding="async" width="1024" height="435" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/06/admin-page-wp-query-custom-pagination-tutsnano-1024x435.png" alt="অ্যাডমিন পাতায় $wp_query'র জন্য নিজস্ব পেজিনেশন" class="wp-image-1041" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/06/admin-page-wp-query-custom-pagination-tutsnano-1024x435.png 1024w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/06/admin-page-wp-query-custom-pagination-tutsnano-300x127.png 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/06/admin-page-wp-query-custom-pagination-tutsnano-768x326.png 768w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/06/admin-page-wp-query-custom-pagination-tutsnano.png 1111w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">অ্যাডমিন পাতায় $wp_query&#8217;র জন্য নিজস্ব পেজিনেশন</figcaption></figure></div>


<p>সুতরাং, বুঝে নিয়ে ব্যবহার করতে নেই মানা। কোনো ভুল থাকলে জানানোর অনুরোধ। আর ভালো লাগলো কিনা, কিংবা আসল কথা, কাজে লাগলো কিনা, নিচে মন্তব্য করে জানাতে ভুলবেন না। আর কাজে লাগলে, শেয়ার করে সবাইকে জানাতেও ভুলবেন না।</p>



<p><strong>মঈনুল ইসলাম</strong><br><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a rel="noreferrer noopener" href="https://mayeenulislam.github.io/" target="_blank">mayeenulislam.github.io</a></p>



<p><span style="color: #999999;">_____________________________</span></p>



<h3>কৃতজ্ঞতা</h3>



<p>কৃতজ্ঞতা জানাচ্ছি <span class="pl-s1"><span class="pl-c">Christine Cooper</span></span> এবং Milo-কে, তাঁদের দেয়া <a href="http://wordpress.stackexchange.com/a/175649/22728">পরামর্শ আর স্নিপেটের^</a> উপর ভিত্তি করে এখানে একটা কার্যোপযোগী মার্জিত সংস্করণ যোগ করা হয়েছে মাত্র।</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/custom-pagination-admin-panel-wp-query/">অ্যাডমিন প্যানেলে নিজস্ব $wp_query&#8217;র জন্য পেজিনেশন</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mayeenulislam.github.io/tuts/custom-pagination-admin-panel-wp-query/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>কিভাবে গিটহাবে প্রোজেক্ট রিলিয করতে হয়</title>
		<link>https://mayeenulislam.github.io/tuts/releasing-github-project/</link>
					<comments>https://mayeenulislam.github.io/tuts/releasing-github-project/#respond</comments>
		
		<dc:creator><![CDATA[মঈনুল ইসলাম]]></dc:creator>
		<pubDate>Thu, 17 Mar 2016 07:58:35 +0000</pubDate>
				<category><![CDATA[অন্যান্য টিউটোরিয়াল]]></category>
		<category><![CDATA[জ্ঞান-স্তরভিত্তিক টিউটোরিয়াল]]></category>
		<category><![CDATA[প্রাথমিক স্তরের টিউটোরিয়াল]]></category>
		<guid isPermaLink="false">https://mayeenulislam.github.io/tuts/?p=995</guid>

					<description><![CDATA[<p> [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/releasing-github-project/">কিভাবে গিটহাবে প্রোজেক্ট রিলিয করতে হয়</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Github.com আমাদেরকে সামাজিকভাবে কোডিং করার একটা ধারণা দেয়। এই সাইট ব্যবহার করে আমরা বন্ধু, সহকর্মী, গুরু এমনকি অজানা কারো সাথেও সামাজিকভাবে কোড করতে পারি। অধিকাংশ গিটহাব প্রোজেক্টই উন্মুক্ত সোর্সের, কারণ প্রোজেক্টগুলো প্রাথমিকভাবেই জনসমক্ষে উন্মুক্ত। তবে আপনি প্রাইভেট রেপোযিটোরিও তৈরি করতে পারেন, কিন্তু সেগুলো বিনামূল্য নয়। উন্মুক্ত কিংবা প্রাইভেট &#8211; যাই হোক, গিটহাবে তোলা অধিকাংশ গুছিয়ে নেয়া পণ্যও এর ডেভলপার কিংবা মালিক <em>রিলিয</em> করেন না। তাই আজকে আমরা দেখার চেষ্টা করবো, কিভাবে গিটহাব প্রোজেক্টকে রিলিয করতে হয়।</p>



<p>ধরা যাক, আপনার গিটহাব রেপোযিটোরিটাই আপনার প্রোজেক্ট। এবং আপনি এখন এর 1.0.0 সংস্করণের কাজ করছেন। আরো কয়েকজনও কমিট করছেন এই রেপোযিটোরিতে। এবারে আপনারা সবাই ঠিক করলেন এই প্রোজেক্টটির 1.0.0 সংস্করণটি রিলিয করবেন। তো এপর্যায়ে আপনারা আপনাদের কমিট করা শেষ করলেন এবং রিলিযের জন্য প্রস্তুতি নিলেন।</p>



<h3>রিলিয দেয়ার গিট পদ্ধতি</h3>



<p>git ব্যবহার করে প্রোডাক্ট রিলিয দেয়ার পদ্ধতি হচ্ছে <code>git tag</code>। কমান্ডলাইনে (git bash ব্যবহার করে) কাজটা করার উপায় হচ্ছে:</p>



<pre class="wp-block-preformatted">git tag -a v1.0.0 -m "First Release"</pre>



<p>এতে যেটা হবে সর্বশেষ কমিটে <code>v1.0.0</code> ট্যাগটি জুড়ে যাবে। এবারে কমান্ডলাইনে ট্যাগ পুশ করে দিলেই গিটহাবে একটা ট্যাগ তৈরি হয়ে যাবে।</p>



<pre class="wp-block-preformatted">git push -u origin --tags</pre>



<p>কিন্তু এতে রিলিয নোট লেখা হবে না।&nbsp;তাই ট্যাগ তৈরি এবং রিলিয দেয়ার জন্য গিটহাব-এ রয়েছে রিলিয ফিচার:</p>



<h3>কিভাবে রিলিয করতে হয়</h3>



<span id="more-995"></span>



<p><code>https://github.com/username/repo</code>&nbsp;সাধারণত এইরকমই হয় গিটহাবে রেপোযিটোরির লিংক। তো আপনার রেপোযিটোরিতে&nbsp;<kbd>releases</kbd>&nbsp;লিংকে ক্লিক করুন।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-release-link-tutsnano.png" rel="attachment wp-att-998"><img decoding="async" width="600" height="41" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-release-link-tutsnano.png" alt="গিটহাবে 'releases' লিংকে ক্লিক করুন" class="wp-image-998" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-release-link-tutsnano.png 600w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-release-link-tutsnano-300x21.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></a><figcaption class="wp-element-caption">গিটহাবে &#8216;releases&#8217; লিংকে ক্লিক করুন</figcaption></figure></div>


<p>রিলিযেয পাতায় Create a new Release&nbsp;বোতামে ক্লিক করুন।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-create-new-release-tutsnano.png" rel="attachment wp-att-999"><img decoding="async" width="503" height="246" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-create-new-release-tutsnano.png" alt="রিলিয পর্দায় 'Create a new release' বোতামে ক্লিক করুন" class="wp-image-999" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-create-new-release-tutsnano.png 503w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-create-new-release-tutsnano-300x147.png 300w" sizes="(max-width: 503px) 100vw, 503px" /></a><figcaption class="wp-element-caption">রিলিয পর্দায় &#8216;Create a new release&#8217; বোতামে ক্লিক করুন</figcaption></figure></div>


<p>রিলিয নোট পাতায় রিলিয নোট লিখে শেষ করুন।</p>


<div class="wp-block-image">
<figure class="alignright"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-fill-up-release-note-tutsnano.png" rel="attachment wp-att-1000"><img decoding="async" width="300" height="270" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-fill-up-release-note-tutsnano-300x270.png" alt="রিলিয নোট লিখুন" class="wp-image-1000" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-fill-up-release-note-tutsnano-300x270.png 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-fill-up-release-note-tutsnano.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption class="wp-element-caption">রিলিয নোট লিখুন</figcaption></figure></div>


<p><strong>&#8220;Tag version&#8221;</strong> হলো সংস্করণের নাম্বার, অর্থাৎ যে সংস্করণটি রিলিয করতে যাচ্ছেন আপনি, আমাদের ক্ষেত্রে যেমন ব্যাপারটা হলো 1.0.0। <strong>&#8220;Release title&#8221;</strong>&nbsp;যেকোনো কিছু&nbsp;হতে পারে, আপনি যা দিয়ে এই রিলিযটাকে সূচিত করতে চান আরকি। উদাহরণ হিসেবে বলা যায়, ওয়ার্ডপ্রেস তাদের রিলিযগুলো একেকজন জ্যায শিল্পীর নামানুসারে করে থাকে, তো আপনার ক্ষেত্রে এটা যেকোনো কিছু হতে পারে। আমরা নাম দিতে পারি &#8220;প্রথম রিলিয&#8221;, কিংবা &#8220;প্রাথমিক রিলিয&#8221;, কিংবা &#8220;আন্তর্জাতিক রিলিয&#8221; ইত্যাদি যেকোনো কিছুই।</p>



<p><strong>বিবরণ</strong>&nbsp;অংশে মার্কডাউন দিয়ে রিলিয সম্পর্কে বিস্তারিত লিখতে পারবেন। কিন্তু রিলিযের ফিচার সংশ্লিষ্ট তথ্যাদি দিয়ে যথোপযুক্ত রিলিয নোটই লিখতে উৎসাহিত করা হচ্ছে।&nbsp;আপনি প্রাকদর্শনও দেখতে পারবেন।</p>



<p>এটা যদি আপনার প্রাক-রিলিয হয়ে থাকে, যা আসলে আনুষ্ঠানিক কোনো রিলিয না, কিংবা [মোটামুটি প্রস্তুতই], পরীক্ষা করার জন্য, কিংবা ডেভলপমেন্ট পরখ করার জন্য ইত্যাদি ক্ষেত্রে, আপনি চাইলে:</p>



<blockquote class="wp-block-quote">
<p>This is a pre-release checkbox.</p>
</blockquote>



<p>লেখা চেকবাক্সটি&nbsp;চেক করে দিতে পারেন।</p>



<p>আপনি এই মুহূর্তে প্রকাশ করতে চাচ্ছেন না? চাইলে, রিলিযের তথ্যগুলো খসড়া আকারে সংরক্ষণ করেও রেখে দিতে পারেন।&nbsp;কিংবা চাইলেই এক ক্লিকে প্রকাশও করে ফেলতে পারেন। আপনার রিলিয যেকোনো সময় সম্পাদনা কিংবা হালনাগাদও করতে পারেন।তো, আপনার রেপোযিটোরি/প্রোজেক্ট এখন প্রকাশিত।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-released-tutsnano.png" rel="attachment wp-att-1001"><img decoding="async" width="300" height="236" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-released-tutsnano-300x236.png" alt="সংস্করণটি গিটহাবে রিলিয দেয়া হয়েছে" class="wp-image-1001" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-released-tutsnano-300x236.png 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-released-tutsnano.png 504w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption class="wp-element-caption">সংস্করণটি গিটহাবে রিলিয দেয়া হয়েছে</figcaption></figure></div>


<h4><strong>বাইনারি ফাইল যোগ</strong></h4>



<p>রিলিয নোটে বাইনারি ফাইল আবার কী জিনিস? ধরা যাক, আপনার রিলিযে একটা এক্সেকিউটেবল ফাইল রয়েছে, সেক্ষেত্রে আপনি চাইলে সেটাকে এই স্থানে যোগ করে দিতে পারেন, শ্রেফ টেনে ছেড়ে দিয়ে&#8230;। ধরা যাক, আপনি খুবই সাধারণ একটা পিএইচপি কিংবা এইচটিএমএল/সিএসএস প্রোজেক্ট রিলিয দিতে চান, সেক্ষেত্রে শ্রেফ ফাইলগুলো কমপ্রেস করে এখানে যোগ করে দিতে পারেন।</p>



<p>সত্যি বলতে কি, এটা আপনার প্রোজেক্টের ঐ ভার্ষনের ফাইলগুলো, যেখানে অবাঞ্ছিত ফাইল কিংবা কোনো অবাঞ্ছিত কোড নেই।</p>



<p>তো, কিভাবে একটা বাইনারি ফাইল বানানো যায়? আসলে, সেটা আপনার প্রোজেক্টের ধরণই নির্ধারণ করে দিবে। স্ক্রিপ্টিং ল্যাঙ্গুয়েজের (যেমন: পিএইচপি) কোনো প্রোজেক্টের ক্ষেত্রে আমার পছন্দ হলো রেপোযিটোরির বিদ্যমান অবস্থার (যা আসলে আপনার রিলিয পাবার উপযুক্ত কোডের সংকলন) একটা যিপ সংস্করণ নামিয়ে নেয়া। এই কাজটা গিটহাবে খুব সহজে করা যায়, রেপোযিটোরির ডান দিকের &#8220;Download Zip&#8221; বোতামে ক্লিক করে খুব সহজে পুরো রেপোযিটোরি কমপ্রেস্‌ড অবস্থায় নামিয়ে নেয়া যায়।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-download-the-zip-tutsnano.png" rel="attachment wp-att-1002"><img decoding="async" width="996" height="40" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-download-the-zip-tutsnano.png" alt="রেপোযিটোরিটা যিপ আকারে নামিয়ে নিন" class="wp-image-1002" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-download-the-zip-tutsnano.png 996w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-download-the-zip-tutsnano-300x12.png 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-download-the-zip-tutsnano-768x31.png 768w" sizes="(max-width: 996px) 100vw, 996px" /></a><figcaption class="wp-element-caption">রেপোযিটোরিটা যিপ আকারে নামিয়ে নিন</figcaption></figure></div>


<p>এভাবে ডাউনলোড করলে আপনার রেপোযিটোরির সব গিট রিভিশন ইতিহাস বাদ দিয়ে আপনার প্রোজেক্টটা তার সর্বনিম্ন ফাইল আকারে নেমে আসে। আপনি চাইলে এথেকেও ডেভলপমেন্ট সংক্রান্ত অতিরিক্ত ফাইলসমূহ কিংবা ফোল্ডার ডিলিট করে নিতে পারেন।</p>



<p>তো, রেপোযিটোরিটা খুব সহজে ডাউনলোড করে নিন, আর <code>.zip</code>&nbsp;ফাইলটা আপনার রিলিযের সাথের বাইনারি ফাইল হিসেবে যোগ করে দিন। আমরা এবারে আমাদের আগে প্রকাশ করা রিলিযটাকেই সম্পাদনা করে দেখাচ্ছি:</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-attach-binaries-tutsnano.png" rel="attachment wp-att-1003"><img decoding="async" width="600" height="118" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-attach-binaries-tutsnano.png" alt="রিলিযের সাথে বাইনারি ফাইলসমূহ যোগ করুন" class="wp-image-1003" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-attach-binaries-tutsnano.png 600w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-attach-binaries-tutsnano-300x59.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></a><figcaption class="wp-element-caption">রিলিযের সাথে বাইনারি ফাইলসমূহ যোগ করুন</figcaption></figure></div>


<p>পরখ করে দেখার জন্য আমরা এবারে এটাকে&nbsp;<em>Pre-release</em>&nbsp;চেকবাক্সে ক্লিক করে প্রাকরিলিয বানিয়ে নিলাম।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-released-prerelease-tutsnano.png" rel="attachment wp-att-1004"><img decoding="async" width="300" height="268" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-released-prerelease-tutsnano-300x268.png" alt="রিলিযটাকে প্রাকরিলিয করে দেখা যাক" class="wp-image-1004" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-released-prerelease-tutsnano-300x268.png 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2016/03/release-on-github-released-prerelease-tutsnano.png 486w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption class="wp-element-caption">রিলিযটাকে প্রাকরিলিয করে দেখা যাক</figcaption></figure></div>


<p>আমরা আমাদের <code>xyz.zip</code> বাইনারি ফাইলটা যোগ করেছি, এবং খুব সহজেই আমাদের ব্যবহারকারীদের কাছে এই zip ফাইলের পাথটা ছড়িয়ে দিতে পারি, যাতে তাঁরা ডাউনলোড করে নিতে পারেন আমাদের রিলিয করা পণ্যটি। এই পাথটা মোটামুটি এরকম হয়:</p>



<pre class="wp-block-preformatted">https://github.com/username/repo/releases/download/1.0.0/xyz.zip</pre>



<h4><strong>বাইনারিগুলো কেন</strong></h4>



<p>বাইনারি ফাইল ছাড়াও যেকেউই আপনার রিলিয করা সংস্করণটা খুব সহজেই ডাউনলোড করতে পারেন &#8220;<strong>Source Code</strong>&nbsp;(zip)&#8221;-এ ক্লিক করেই। কিন্তু এই যিপ ফাইলটা ডাউনলোড করলে:</p>



<ul>
<li>আপনার ব্যবহারকারীদের কাছে অপ্রয়োজনীয়ভাবেই গিট রিভিশনের ইতিহাসগুলোও চলে যায়</li>



<li>আর, আপনি চাইলেও, কোনো রিলিয ঠিক কতবার ডাউনলোড হলো, তার কোনো সংখ্যাও আপনি পাবেন না</li>
</ul>



<p>হ্যা, শুধুমাত্র একটা বাইনারি ফাইলই আপনার রিলিযের <strong>ডাউনলোডের পরিমাণ</strong>&nbsp;জানান দিতে সক্ষম।</p>



<h3>ডাউনলোডের হিসাব পান</h3>



<p>আপনি যদি আপনার গিটহাবের রেপোযিটোরির এপিআই ইউআরএল ব্রাউয করেন, তাহলে আপনি আপনার রিলিযের আদ্যোপান্ত JSON আকারে দেখতে পাবেন (শুধুমাত্র ব্যবহারকারী নাম আর রেপোযিটরির নামটা বদলে নিতে হবে):</p>



<pre class="wp-block-preformatted">https://api.github.com/repos/[username]/[repo-name]/releases</pre>



<p>এবং আমরা জানি, জেকুয়েরির&nbsp;<code>getJSON</code>&nbsp;মেথড কাজে লাগিয়ে, আমরা আমাদের রিলিযের ডাউনলোডের সংখ্যা খুব সহজেই পেতে পারি।</p>



<pre class="wp-block-preformatted">$.getJSON("https://api.github.com/repos/someone/kauwa-kala/releases").done(function (json) {
&nbsp;&nbsp;&nbsp; var release = json[0];
&nbsp;&nbsp;&nbsp; console.log(release);
&nbsp;&nbsp;&nbsp; console.log(release.assets[0].download_count);
});</pre>



<h3>ইতি কথা</h3>



<p>তো, আপনার প্রোগ্রাম, প্রোজেক্ট কিংবা রেপোযিটোরি খুব সহজেই গিটহাবে রিলিয করতে পারেন, এবং রিলিযপ্রতি আপনার পণ্যের ডাউনলোডের পরিমাণও জানতে পারেন। সুতরাং, গিটহাবে শ্রেফ রেপোযিটোরিই নয়, আপনার গুছিয়ে আনা রেপোযিটোরিটি পণ্য আকারে রিলিযও করতে থাকুন। <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p><strong>&#8211; মঈনুল ইসলাম</strong><br><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a rel="noreferrer noopener" href="https://mayeenulislam.github.io/" target="_blank">mayeenulislam.github.io</a></p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/releasing-github-project/">কিভাবে গিটহাবে প্রোজেক্ট রিলিয করতে হয়</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mayeenulislam.github.io/tuts/releasing-github-project/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CSS3 ব্যবহার করে কলাম তৈরি</title>
		<link>https://mayeenulislam.github.io/tuts/column-design-css3/</link>
					<comments>https://mayeenulislam.github.io/tuts/column-design-css3/#comments</comments>
		
		<dc:creator><![CDATA[মঈনুল ইসলাম]]></dc:creator>
		<pubDate>Wed, 07 Oct 2015 19:25:41 +0000</pubDate>
				<category><![CDATA[ওয়েব ডিযাইন টিউটোরিয়াল]]></category>
		<category><![CDATA[জ্ঞান-স্তরভিত্তিক টিউটোরিয়াল]]></category>
		<category><![CDATA[প্রাথমিক স্তরের টিউটোরিয়াল]]></category>
		<category><![CDATA[সিএসএস টিউটোরিয়াল]]></category>
		<guid isPermaLink="false">https://mayeenulislam.github.io/tuts/?p=724</guid>

					<description><![CDATA[<p> [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/column-design-css3/">CSS3 ব্যবহার করে কলাম তৈরি</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>পত্রিকার ডিযাইনে কলাম দেখা যায়, ছবিগুলো অ্যালবামে কলাম আকারে সাজানো থাকে, আপনার পোর্টফোলিও কলাম আকারে গুছিয়ে দেখাতে পারেন &#8211; কলাম ডিযাইন তৈরি ঘুরেফিরেই আপনার প্রয়োজন হবে। এজন্যই এর আগে আমরা দেখেছিলাম কিভাবে <a href="https://mayeenulislam.github.io/tuts/columns-php-loop/" target="_blank" rel="noreferrer noopener">পিএইচপি লুপ ব্যবহার করে ওয়েবসাইটে কলামের ডিযাইন</a> করা যায়। আমরা সেদিন বলেছিলাম, CSS3 দিয়েও কাজটা আরো সহজে করা যায়। এতোদিন পরে হলেও আমরা কথা রাখতে পেরেছি, আজ আমরা সেটাই দেখবো ইনশাল্লাহ।</p>



<p>সিএসএস৩ দিয়ে তৈরি কলাম আরো পরিচ্ছন্ন, আরো সহজ। এখানে স্তবকে স্তবকে সাজানো<code> &lt;div&gt;</code>-গুলোকে কোনো ক্লাস কিংবা সিলেক্টরের তোয়াক্কা না করে শ্রেফ সিএসএস দিয়ে ধরে ধরে কলাম আকারে সাজিয়ে ফেলা যাবে। এবং রেসপন্সিভ ডিযাইনেও একই কৌশল কাজে লাগিয়ে লেআউটকে বিভিন্ন ভিউপোর্টে ইচ্ছামতো বদলে নেয়া যাবে।</p>



<p>আসুন দেখা যাক, কিভাবে সেটা করা হয়। আমরা সহজ করার জন্য সবটুকু কাজ একটা ফাইলের মধ্যেই করে দেখাচ্ছি:</p>



<span id="more-724"></span>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/21d8e81800455702e4b9">Gist</a>.
</div></figure>



<p>আমরা <code>&lt;div&gt;</code>-কে বলে দিচ্ছি বামদিকে চলে যেতে, সবগুলো <code>&lt;div&gt;</code>-এর <code>width</code> বলে দিয়েছি, প্রয়োজনীয় মার্জিন দিয়ে সরিয়ে সরিয়ে দেখিয়েছি, আর সবগুলোতে একটা নির্দিষ্ট ম্যাটম্যাটে রং দিয়ে দিয়েছি। তাতে যেটা হবে, বামদিকে চেপে একের পর এক <code>&lt;div&gt;</code> বসে যাবে (আমরা <code>&lt;div&gt;</code>গুলোকে বোঝার জন্য <code>100px</code>-এর একটা উচ্চতা দিয়েছি)। এবারে আমরা CSS3 সিলেক্টর ব্যবহার করে কলাম ১ এবং কলাম ৩-এর জন্য আলাদা আলাদা সিএসএস র&#x200d;্যুল ডিক্লেয়ার করেছি। আমরা বলেছি:</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/21d8e81800455702e4b9">Gist</a>.
</div></figure>



<p>এখানে কমেন্ট করে বুঝিয়ে দিয়েছি, কোন কোডটা ১ম কলাম এবং কোন কোডটা তৃতীয় কলামকে ধরেছে। এতে যা হয়েছে, তা দেখা যাক:</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/10/css3-column.png"><img decoding="async" width="1024" height="314" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/10/css3-column-1024x314.png" alt="সিএসএস৩ দিয়ে ৩ কলামের ডিযাইন" class="wp-image-728" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/10/css3-column-1024x314.png 1024w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/10/css3-column-300x92.png 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/10/css3-column-768x236.png 768w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/10/css3-column.png 1365w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">সিএসএস৩ দিয়ে ৩ কলামের ডিযাইন</figcaption></figure></div>


<p>এখন সময় এসেছে CSS3 ছদ্ম (pseudo) সিলেক্টর <code>:nth-of-type(n)</code> সম্পর্কে জানার:</p>



<p><code>:nth-of-type(n)</code> হলো কোনো একই এলিমেন্টের <code>n</code> তম-টিকে ধরার জন্য ব্যবহৃত সিলেক্টর। এটি ব্যবহার করে কোনো সিলেক্টরের, শীর্ষ&#8217;র&nbsp;ভিতরকার, নিজস্ব ধরণের <code>n</code> তম-টিকে ধরা যায়। <code>n</code> হতে পারে কোনো অংক, কীওয়ার্ড কিংবা কোনো ফর্মুলা।</p>



<p>এই কথাটা&nbsp;বোঝার জন্য নিচের কোড স্নিপেটটি দেখা যাক:</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/21d8e81800455702e4b9">Gist</a>.
</div></figure>



<p>মানে হচ্ছে, একটা <code>&lt;div&gt;</code>-এর ভিতরে <code>&lt;p&gt;</code>, <code>&lt;span&gt;</code>, <code>&lt;a&gt;</code> ইত্যাদি বিভিন্ন ধরণের&nbsp;ট্যাগ থাকলে, <code>&lt;div&gt;</code>টা হচ্ছে শীর্ষ বা প্যারেন্ট; এখন আমরা যদি <code>p:nth-of-type(2)</code> লিখি, তাহলে তা এর ভিতরকার দ্বিতীয় p ট্যাগকে ধরবে। যদিও দ্বিতীয় এলিমেন্টটা p না, বরং a, কিন্তু সে যেহেতু শুধুমাত্র একই ধরণের এলিমেন্টকে টার্গেট করে, তাই p-এর দ্বিতীয় এলিমেন্টকে সে ধরবে। আমাদের এই উদাহরণে <code>n</code> হচ্ছে ২, কেননা আমরা দ্বিতীয়টাকে সিলেক্ট করার জন্য বলেছি।</p>



<p>ঠিক একইভাবে <code>:nth-child(n)</code>-ও ব্যবহার করা যায়, কিন্তু <code>nth-child</code> যেটা করে, সে, ধরণের ধার ধারে না, বরং শীর্ষ&#8217;র ভিতরকার <code>n</code>-তম সন্তানকে খুঁজে নেয়। যেমন: উপরের উদাহরণে আমরা যদি <code>p:nth-child(2)</code> লিখতাম, তাহলে সে কিন্তু কিছুই করতো না, কারণ আমাদের শীর্ষ&#8217;র দ্বিতীয় এলিমেন্টটা কোনো <code>&lt;p&gt;</code> ট্যাগ না, বরং একটা <code>&lt;a&gt;</code> ট্যাগ।</p>



<p>আমরা যখন ডিযাইন করছি, তখন শুধু <code>&lt;div&gt;</code> দিয়ে হয়তো করছি, বিভিন্ন এলিমেন্টের মিশেল না হলে <code>nth-of-type</code> কিংবা <code>nth-child</code>-এর যেকোনোটি ব্যবহার করা যায়। কিন্তু যদি বিভিন্ন এলিমেন্টের মিশেল থাকে, তাহলে <code>nth-of-type</code>-এর ব্যবহার নির্দিষ্ট আর&nbsp;নিরাপদও।</p>



<h3>ফর্মুলা</h3>



<p>এখানে তো আমরা ৩টি কলামের কোড দেখিয়েছি বোঝানোর জন্য। আপনার তো ৪ কলাম, ৫ কলাম, ১০ কলাম অনেক কিছুরই দরকার হতে পারে, তখন কী করবেন? তাই জেনে নিতে হবে ফর্মুলাটা। তাহলে যেকোনো সংখ্যক কলাম তৈরিতে নিশ্চিন্ত থাকা যাবে:</p>



<p class="has-text-align-center"><strong>কলাম সংখ্যা × n + লক্ষ্য কলাম</strong></p>



<p>কয়টা কলাম হবে? ৪টা। তাহলে কলাম সংখ্যা হলো ৪। এবারে কোন কলামকে টার্গেট করে সিএসএস লিখতে চান? প্রথম&nbsp;কলামকে। তাহলে লক্ষ্য কলাম হচ্ছে ১। কোন কলামকে টার্গেট করে সিএসএস লিখতে চান? ৪র্থ কলামকে। তাহলে লক্ষ্য কলাম হচ্ছে ৪।</p>



<pre class="wp-block-preformatted">.item:nth-of-type(4n + 1){ /* css rules here */ }
.item:nth-of-type(4n + 4){ /* css rules here */ }
</pre>



<p>আমরা ঠিক এই কৌশল কাজে লাগিয়ে পত্রিকার জন্য একটা লেআউট তৈরি করলাম:</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/10/css3-columns-preview-by-nanodesigns.jpg"><img decoding="async" width="1008" height="1024" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/10/css3-columns-preview-by-nanodesigns-1008x1024.jpg" alt="CSS3 দিয়ে করা কলাম দিয়ে পত্রিকার লেআউট" class="wp-image-729" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/10/css3-columns-preview-by-nanodesigns-1008x1024.jpg 1008w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/10/css3-columns-preview-by-nanodesigns-295x300.jpg 295w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/10/css3-columns-preview-by-nanodesigns-768x780.jpg 768w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/10/css3-columns-preview-by-nanodesigns.jpg 1349w" sizes="(max-width: 1008px) 100vw, 1008px" /></a><figcaption class="wp-element-caption">CSS3 দিয়ে করা কলাম দিয়ে পত্রিকার লেআউট</figcaption></figure></div>


<h3>সীমাবদ্ধতা</h3>



<p>CSS3 ছদ্ম সিলেক্টরগুলো ব্যবহারে কিছুটা সীমাবদ্ধতা আছে। বিশেষ করে Internet Explorer 8-এ <code>:nth-of-type(n)</code> এবং <code>:nth-child(n)</code> কাজ করে না। এই ছদ্ম সিলেক্টরদ্বয় সমর্থনকারী প্রথম সংস্করণগুলো হলো: Google Chrome 4.0, Internet Explorer (IE) 9, Mozilla Firefox 3.5, Apple Safari 3.2, এবং Opera 9.6। যদি আপনার সাইট এসকল ব্রাউযারে ব্রাউয হবার সম্ভাবনা থাকে, তাহলে আপনার জন্য বিকল্প হিসেবে <a href="https://mayeenulislam.github.io/tuts/columns-php-loop/" target="_blank" rel="noreferrer noopener">PHP দিয়ে তৈরি কলাম</a> তো থাকলোই&#8230;। <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<div class="is-content-justification-center is-layout-flex wp-container-1 wp-block-buttons">
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://github.com/mayeenulislam/css3-columns" target="_blank" rel="noreferrer noopener">Github রেপোযিটোরি</a></div>



<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="http://mayeenulislam.github.io/css3-columns/" target="_blank" rel="noreferrer noopener">প্রিভিউ দেখুন</a></div>
</div>



<p><strong>&#8211; মঈনুল ইসলাম</strong><br><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a rel="noreferrer noopener" href="https://mayeenulislam.github.io/" target="_blank">mayeenulislam.github.io</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3>বাড়তি সহায়তা</h3>



<ul>
<li><a rel="noreferrer noopener" href="https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-of-type" target="_blank">CSS3 <code>:nth-of-type</code> Selector^</a> &#8211; MDN Dev Net</li>



<li><a rel="noopener" href="https://css-tricks.com/examples/nth-child-tester/" target="_blank">nth-child, nth-of-type, nth-last-child, nth-last-of-type সিলেক্টর পরখ করে দেখার অনলাইন অ্যাপ^</a> &#8211; সিএসএস ট্রিক্‌স</li>
</ul>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/column-design-css3/">CSS3 ব্যবহার করে কলাম তৈরি</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mayeenulislam.github.io/tuts/column-design-css3/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>GCLI &#8211; ফায়ারফক্সের শক্তিশালী কনসোল টুল</title>
		<link>https://mayeenulislam.github.io/tuts/gcli-powerful-console-firefox/</link>
					<comments>https://mayeenulislam.github.io/tuts/gcli-powerful-console-firefox/#respond</comments>
		
		<dc:creator><![CDATA[মঈনুল ইসলাম]]></dc:creator>
		<pubDate>Thu, 19 Feb 2015 19:08:08 +0000</pubDate>
				<category><![CDATA[ওয়েব ডেভলপমেন্ট টিউটোরিয়াল]]></category>
		<category><![CDATA[জ্ঞান-স্তরভিত্তিক টিউটোরিয়াল]]></category>
		<category><![CDATA[প্রাথমিক স্তরের টিউটোরিয়াল]]></category>
		<guid isPermaLink="false">https://mayeenulislam.github.io/tuts/?p=605</guid>

					<description><![CDATA[<p> [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/gcli-powerful-console-firefox/">GCLI &#8211; ফায়ারফক্সের শক্তিশালী কনসোল টুল</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>কমান্ডলাইনে কাজ করার মজা একজন প্রোগ্রামার খুব উপভোগ করেন। কমান্ডলাইন কী? উইন্ডোজে যেমন ডস মোডে প্রোগ্রাম লিখে কাজ করা &#8211; বিষয়টা তা-ই। ওমুক ফোল্ডারে ঢুকতে হলে লিখতে হয় <code>cd omuk</code> &#8211; <em>মহা মসিবতের কথা!</em> অথচ GUI পদ্ধতিতে আমরা মাত্র একটা ক্লিকে কত অনায়াসে ফোল্ডারের পর ফোল্ডারে যাতায়াত করতে থাকি। কিন্তু GUI পদ্ধতিতে কিছু কিছু কাজ আছে, যেগুলো করতে গেলে ঝামেলা পোহাতে হয়, অথচ কমান্ডলাইনে (মানে কমান্ড লিখে) খুব অনায়াসে, হয়তো মাত্র এক লাইনের একটা কোড লিখে কাজগুলো একসাথে করে ফেলা যায় &#8211; বলা ভালো তুড়ি মেরে করে ফেলা যায়। খুব সহজ একটা উদাহরণ হতে পারে, অমুক ফোল্ডারে ঢুকে সেখানকার সকল ফাইল তমুক ফোল্ডারে নিয়ে যাও। আপনি যেখানে কাজটি করতে পারবেন কমান্ডলাইনে মাত্র এক লাইনের কমান্ড লিখে, সেখানে GUI পদ্ধতিতে আপনাকে অনেকগুলো ফোল্ডারে ঘুরাঘুরি করে কাজটি করতে হবে। কমান্ডলাইন ব্যবহার করার মজাটা ব্যবহার না করেই বুঝতে চাইলে কীবোর্ড শর্টকাট ব্যবহারের সাথে তুলনা করে বুঝা যেতে পারে। খুব সহজে কীবোর্ড শর্টকাট ব্যবহার করে কপি-পেস্ট করার কমান্ডটি (<code>ctrl+c</code> » <code>ctrl+v</code>) আমরা হরহামেশা ব্যবহার করি। যারা অভ্যস্ত তারা স্বীকার করতে বাধ্য হবেন যে, এটা মাউস ব্যবহার করার চেয়ে দ্রুত। 🙂</p>



<p>আমরা আশা করি কমান্ডলাইনের মজা আর কার্যকারিতার শক্তিমত্তা সম্পর্কে একটা ধারণা পেয়ে গেছি। ব্যস, আমাদের আজকের আলোচনা কমান্ডলাইন নিয়ে হলেও তা অপারেটিং সিস্টেমের শেল কমান্ডলাইন না, বরং আমাদের বহুল পরিচিত, বহুল ব্যবহৃত ওপেন সোর্স ব্রাউজার Mozilla Firefox-এর কমান্ডলাইন, যার কেতাবি নাম হচ্ছে GCLI (Graphical Command Line Interpreter) &#8211; সোজা বাংলায়: <em>কমান্ড লাইনের লেখাকে দৃষ্টিগ্রাহ্য করে কাজে রূপান্তর করার প্রোগ্রাম</em>। এটি ফায়ারফক্সের বিল্ট-ইন ওয়েব ডেভলপার টুল-এর একটি এক্সটেনশন।</p>



<p>এই কমান্ডলাইনটি অতি সম্প্রতি আমার এক সহকর্মী আমাকে দেখালেন, আমি মোহাম্মদ সিরাজুল ইসলাম-এর কৃতজ্ঞতা জ্ঞাপন করছি। এটি ইউনিক্স কনসোলের মতোই অপূর্ব একটি ফিচার। এতোদিন কেন দেখলাম না, নিজেকেই শুধাই!</p>



<span id="more-605"></span>



<h3>কিভাবে কী?</h3>



<p>ফায়ারফক্স ব্রাউযার খুলে কীবোর্ডে <code>Shit+F2</code> চাপলেই ব্রাউযারের একেবারে নিচে দেখবেন একটি ছোট্ট বার খুলে গেছে। অথবা ব্রাউযারের Tools » Web Developer » Developer Toolbar সিলেক্ট করে দিলেই নিচে এটিকে দেখা যাবে।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/02/Firefox-GCLI-nanodesigns.png"><img decoding="async" width="1024" height="356" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/02/Firefox-GCLI-nanodesigns-1024x356.png" alt="ফায়ারফক্স GCLI কমান্ডলাইন ব্রাউযারের একেবারে নিচে দেখা যাচ্ছে" class="wp-image-609" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/02/Firefox-GCLI-nanodesigns-1024x356.png 1024w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/02/Firefox-GCLI-nanodesigns-300x104.png 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/02/Firefox-GCLI-nanodesigns-768x267.png 768w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/02/Firefox-GCLI-nanodesigns.png 1365w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">ফায়ারফক্স GCLI কমান্ডলাইন ব্রাউযারের একেবারে নিচে দেখা যাচ্ছে</figcaption></figure></div>


<p>ব্যস, এটাই হলো আপনার ফায়ারফক্স জিসিএলআই কমান্ডলাইন। এখানেই আপনি বৈধ কমান্ডগুলো লিখে প্রয়োজনীয় অনেক কাজ অনায়াসে করে নিতে পারবেন। সুতরাং বাকি পোস্টটা না পড়েও আপনি এখনই অনায়াসে কাজে নেমে যেতে পারেন। কিন্তু তবু পড়ে নেয়ার অনুরোধ রইলো&#8230;</p>



<h3>কী কাজে আসবে?</h3>



<p>কী কাজে আসবে, তার ইয়ত্তা নেই। কারণ এটি এক্সটেনসিবল, মানে বর্ধনযোগ্য, মানে বাড়তি যোগ করা যাবে এমন সক্ষমতাসম্পন্ন একটি প্রোগ্রাম। আমি কয়েকটা মাত্র&nbsp;উদাহরণ দিবো, কারণ আমি নিজেও জানি খুব কম:</p>



<h4><strong>স্ক্রিনশট:</strong></h4>



<p>বিভিন্নসময় ওয়েবসাইটের স্ক্রিনশট নেবার দরকার পড়ে। ডেস্কটপে আমার পছন্দ LightShot Desktop &#8211; রীতিমতো অসাধারণ! ওয়েবপেজে, বিশেষ করে লম্বা ওয়েবপেজে সেটা আবার কাজ করে না। তখন ব্রাউযারের কোনো এক্সটেনশন ব্যবহার ছাড়া গত্যান্তর থাকে না। কিন্তু ব্রাউযারের লাইটশট এক্সটেনশনটা ঠিক অতোটা আরামপ্রদ না। সেজন্য Firefox-এ আমি Screengrab ব্যবহার করি, আর Google Chrome-এ আমি Full Page Screen Capture এক্সটেনশনটি ব্যবহার করি। এই দুটোর মধ্যে স্ক্রিনগ্র্যাবের একটা বদভ্যাস হচ্ছে, স্টিকি টপ বারগুলো সে বুঝতে পারে না, আপনি হয়তো পাতার মাঝামাঝি থেকে পুরো পাতাটার স্ক্রিনশট নিতে বললেন, সে তখন স্টিকি টপবারটাকে মাঝখানে রেখে স্ক্রিনশট নেয়। এই সমস্যাটা আবার ফুল পেজ স্ক্রিন ক্যাপচার-এর ক্ষেত্রে হয় না।</p>



<p>কিন্তু আমাদের আলোচ্য কমান্ডলাইন দিয়েও কাজটা খুব সহজে করা যায়, এবং তা স্টিকী টপবারগুলোকেও বুঝতে পারে। শুধু কমান্ডলাইনে লিখতে হবে:</p>



<pre class="wp-block-preformatted">screenshot</pre>



<p>এন্টার দিলেই হলো, কাজ শেষ। ব্রাউযারে সেট করা ডাউনলোড ফোল্ডারে জমা হয়ে যাবে স্ক্রিনশটটা।</p>



<p>কিন্তু প্রাথমিকভাবে আপনার ভিযিবল অংশটুকু শুধু জমা হবে। লম্বা ওয়েবপেজের পুরোটার স্ক্রিনশট নিতে হলে লিখতে হবে:</p>



<pre class="wp-block-preformatted">screenshot --fullpage</pre>



<p>খুব দ্রুত কাজ করে এটি।</p>



<p>●●●</p>



<h4><strong>ফোল্ডার:</strong></h4>



<p>আবার লিখুন:</p>



<pre class="wp-block-preformatted">folder open</pre>



<p>এন্টার চাপলেই সে আপনার ইউযার ফোল্ডারটি খুলবে। আপনি অন্য ফোল্ডার খুলতে চাইলে পাথটা (path) বসিয়ে দিলেই হয়ে যাবে, সাথে সাথে খুলে যাবে। যেমন এইমাত্র সংরক্ষিত স্ক্রিনশটগুলো দেখতে চাইলে ডাউনলোড্‌স ফোল্ডারে ঢুকতে আমি লিখলাম:</p>



<pre class="wp-block-preformatted">folder open&nbsp;C:\Users\mayeenulislam\downloads</pre>



<p>এন্টার চাপতেই খুলে গেল।</p>



<p>●●●</p>



<h4><strong>রিসাইয:</strong></h4>



<p>আপনি হয়তো রেসপন্সিভ ওয়েব ডিযাইন করছেন, ব্রাউযারটা টেনে টেনে ছোট-বড় করে ব্রেকপয়েন্টগুলো খুঁজছেন, এক্ষেত্রে আপনার সহায়ক হতে পারে ডেভলপার টুলবারের resize কমান্ডটি:</p>



<pre class="wp-block-preformatted">resize to 320 480</pre>


<div class="wp-block-image">
<figure class="alignright"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/02/responsive-design-using-firefox-GCLI-nanodesigns.png"><img decoding="async" width="197" height="300" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/02/responsive-design-using-firefox-GCLI-nanodesigns-197x300.png" alt="GCLI দিয়ে রেসপন্সিভ ওয়েব ডেভলপমেন্ট" class="wp-image-611" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/02/responsive-design-using-firefox-GCLI-nanodesigns-197x300.png 197w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/02/responsive-design-using-firefox-GCLI-nanodesigns.png 356w" sizes="(max-width: 197px) 100vw, 197px" /></a><figcaption class="wp-element-caption">GCLI দিয়ে রেসপন্সিভ ওয়েব ডেভলপমেন্ট</figcaption></figure></div>


<p>এন্টার চাপতেই দেরি, রিসাইয হতে দেরি নেই। এবং এই নতুন উইন্ডোতে আপনি স্ক্রিনশটও নিতে পারবেন, আর টাচ ইভেন্টগুলোকেও সিমুলেট করতে পারবেন। (এটা অবশ্য ওয়েব ডেভলপার-এর Responsive Design View, যা খুব সহজে <code>Ctrl + Shift + M</code> দিয়ে নিয়ন্ত্রণ করা যায়)</p>



<p>আগের অবস্থায় ফিরে যেতে লিখতে হবে</p>



<pre class="wp-block-preformatted">resize off</pre>



<p>●●●</p>



<h4><strong>টিল্ট:</strong></h4>


<div class="wp-block-image">
<figure class="alignright"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/02/tilt-view-GCLI-nanodesigns.png"><img decoding="async" width="243" height="300" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/02/tilt-view-GCLI-nanodesigns-243x300.png" alt="ওয়েবসাইটের থ্রিডি চেহারা - tilt" class="wp-image-612" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/02/tilt-view-GCLI-nanodesigns-243x300.png 243w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/02/tilt-view-GCLI-nanodesigns.png 450w" sizes="(max-width: 243px) 100vw, 243px" /></a><figcaption class="wp-element-caption">ওয়েবসাইটের থ্রিডি চেহারা &#8211; tilt</figcaption></figure></div>


<p>কমান্ড লিখুন</p>



<pre class="wp-block-preformatted">tilt open</pre>



<p>কীবোর্ড থেকে হাত না সরিয়ে <code>shift + f2</code> চেপে আবার কমান্ডলাইনে চলে আসুন:</p>



<pre class="wp-block-preformatted">tilt rotate 50 30</pre>



<p>অর্থাৎ থ্রিডি ভিউটাকে ৫০ ডিগ্রি এক্স অক্ষে, আর&nbsp;৩০ ডিগ্রি ওয়াই অক্ষে ঘুরাও। আবার <code>shift + f2</code> চেপে কমান্ডলাইনে এসে লিখুন:</p>



<pre class="wp-block-preformatted">tilt close</pre>



<p>বন্ধ হয়ে গেল থ্রিডি ভিউ। এই ভিউতে আপনি আপনার ডিযাইনে লেয়ারগুলো দেখতে পারছিলেন।</p>



<p>●●●</p>



<h4><strong>কুকী:</strong></h4>



<p>এবং শেষটি:</p>



<pre class="wp-block-preformatted">cookie list</pre>



<p>লিখে একটা এন্টার চাপলেই আপনি বুঝবেন কী কাজের জিনিস এটি। আপনার সাইটের সব cookie, যদি কোনোটা রেজিস্টার করা থেকে থাকে, দেখা যাবে</p>



<h3>কিভাবে জানবো কোন কমান্ডে কী হয়?</h3>



<p>খুব সহজেই জানা যাবে কোন কমান্ড কীজন্য ব্যবহার করতে হবে। লিখতে হবে:</p>



<pre class="wp-block-preformatted">help</pre>



<p>এন্টার দিলেই সে দেখাবে কী কী কমান্ড আছে, সেগুলোতে ক্লিক করলেই সেগুলোর সহায়তা দেখা যাবে। যদি কমান্ডটা আপনার জানা থাকে, কিন্তু আপনি কমান্ডটির আরো বিস্তারিত সুযোগ-সুবিধাগুলো জেনে নিতে চান, তাহলে লিখতে হবে:</p>



<pre class="wp-block-preformatted">help &lt;command&gt;</pre>



<p>অর্থাৎ আমাদের স্ক্রিনশট কমান্ডটার জন্য ব্যাপারটা হবে:</p>



<pre class="wp-block-preformatted">help screenshot</pre>



<p>ব্যস, যা যা কমান্ড এর সাথে দেয়া যায়, (যেমন আমাদের দেখা <code>screenshot --fullpage</code>) সেগুলো দেখা যাবে।</p>



<p>●●●</p>



<p>অন্যান্য কমান্ডলাইনগুলোর মতোই এতে কীবোর্ডের আপ-অ্যারো (up arrow) চাপলে আগে লেখা কমান্ডগুলো পাওয়া যায়। এছাড়া কমান্ড লিখে আপ-অ্যারো বা ডাউন-অ্যারো চাপতে থাকলে সম্ভাব্য অপশনগুলোও দেখাবে, যেমন: <code>cookie</code> লিখে কাজটি করলে <code>list</code>, <code>set</code>, <code>remove</code> ইত্যাদি সাজেশন দেখাবে।</p>



<p>&#8230;তো জেনে গেলেন খনির খোঁজ, এবারে আমাকে শিখানো আপনাদের দায়িত্ব&#8230; কারণ একজন মযিলা ডেভলপারের থেকে এই ব্লগটা এলে অবশ্যই আরো অনেক অনেক সমৃদ্ধ তথ্য থাকতো। সেই সমৃদ্ধ ব্লগের অপেক্ষায় থাকলাম।</p>



<h3>বাড়তি তথ্য</h3>



<ul>
<li><a title="GCLI is a Graphical Command Line Interpreter." href="https://github.com/joewalker/gcli/blob/master/docs/index.md" target="_blank" rel="noopener">ফায়ারফক্সের GCLI ব্যবহারের ডকুমেন্টেশন^</a></li>



<li><a title="DevTools/Features/GCLI - Firefox" href="https://wiki.mozilla.org/DevTools/Features/GCLI" target="_blank" rel="noopener">GCLI প্রোজেক্ট সম্পর্কিত তথ্য^</a></li>
</ul>



<p><strong>-মঈনুল ইসলাম</strong><br><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a rel="noreferrer noopener" href="https://mayeenulislam.github.io/" target="_blank">mayeenulislam.github.io</a></p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/gcli-powerful-console-firefox/">GCLI &#8211; ফায়ারফক্সের শক্তিশালী কনসোল টুল</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mayeenulislam.github.io/tuts/gcli-powerful-console-firefox/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>গিট ব্যবহারের একেবারে প্রাথমিক জ্ঞান : পর্ব ২</title>
		<link>https://mayeenulislam.github.io/tuts/git-basics-2/</link>
					<comments>https://mayeenulislam.github.io/tuts/git-basics-2/#comments</comments>
		
		<dc:creator><![CDATA[মঈনুল ইসলাম]]></dc:creator>
		<pubDate>Wed, 12 Nov 2014 07:27:37 +0000</pubDate>
				<category><![CDATA[গিট টিউটোরিয়াল]]></category>
		<category><![CDATA[জ্ঞান-স্তরভিত্তিক টিউটোরিয়াল]]></category>
		<category><![CDATA[ন্যানো বেসিX]]></category>
		<category><![CDATA[প্রাথমিক স্তরের টিউটোরিয়াল]]></category>
		<category><![CDATA[গিট]]></category>
		<category><![CDATA[গিট ব্যবহারের কৌশল]]></category>
		<category><![CDATA[গিট শেখা]]></category>
		<category><![CDATA[গিটহাব]]></category>
		<category><![CDATA[ভার্ষন কন্ট্রোল]]></category>
		<guid isPermaLink="false">https://mayeenulislam.github.io/tuts/?p=553</guid>

					<description><![CDATA[<p> [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/git-basics-2/">গিট ব্যবহারের একেবারে প্রাথমিক জ্ঞান : পর্ব ২</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong><a href="https://mayeenulislam.github.io/tuts/git-basics-1/">« আগের পর্ব</a></strong></p>



<p>গত পর্বে আমরা গিট সম্পর্কে অন্তর্নিহীত একটা প্রাথমিক ধারণা পেয়ে গিয়েছিলাম, এবং এখন আমরা গিট কী তা শুধু জানিই না, বুঝিও; কিভাবে গিট কাজ করে তাও জানি, খানিকটা বুঝিও &#8211; আজকে তা পুরোপুরি বুঝে নিবো ইনশাল্লাহ। আমরা কম্পিউটারে গিট ইন্সটল করে ফেলেছি আর সেটাকে সম্পূর্ণ <em>নিজের</em> করে নিয়েছি। এবারে কাজ শুরু করে দেয়া যাক:</p>



<p>আমরা গত পর্বে বলেছিলাম মাত্র ৬টা কমান্ড দিয়ে শিখে নিব, গিট কিভাবে ব্যবহার করতে হয়। &#8230;এখুনি হাত নোংরা করার দরকার নেই, একটু ভালো করে বুঝে নিতে হবে আগে। গিট রেপোযিটরি (কিংবা রেপোজিটোরি) কী? গিট কমিট কী (কমিটি নয় কিন্তু, কিংবা কম্মিট বলারও দরকার নেই)? স্টেজ করা কী? &#8230;বুঝে বুঝে এগোলে কনসেপ্ট পরিষ্কার হবে, নতুন কিছু গ্রহণ করাও সহজ হবে।</p>


<div class="wp-block-image">
<figure class="alignright"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-folder-structure.png"><img decoding="async" width="204" height="300" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-folder-structure-204x300.png" alt="গিট - ফোল্ডার স্ট্রাকচার" class="wp-image-555" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-folder-structure-204x300.png 204w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-folder-structure.png 386w" sizes="(max-width: 204px) 100vw, 204px" /></a><figcaption class="wp-element-caption">গিট &#8211; ফোল্ডার স্ট্রাকচার</figcaption></figure></div>


<h3>ধাপে ধাপে গিট</h3>



<p><span style="text-decoration: underline;">গিট রেপোযিটরি:</span> ধরা যাক, আমার একটা ওয়েবসাইট বানাতে হবে, যেখানে দুটো ফাইল থাকবে: (১) index.html আর (২) style.css। ওযেবসাইটের নাম &#8220;mywebsite&#8221;। এখন কী করবো? &#8230; খুব সহজ, mywebsite নামের একটা ফোল্ডার তৈরি করে তার ভিতরে ফাইল দুটো রাখবো। তাহলে আমরা যদি বলি ঐ mywebsite ফোল্ডারটা হলো আমাদের প্রজেক্ট ফোল্ডার, ইউনিক্সের ভাষায় যাকে বলে ডিরেক্টরি, আর গিটের ভাষায় যাকে বলে রেপোযিটরি (repository)। ব্যস রেপোযিটরি বুঝে ফেললাম আমরা &#8211; রেপোযিটরি হলো আমাদের প্রজেক্টের সকল ফাইল একত্র করে রাখার একটা স্থান। তাহলে দেখা যাচ্ছে, একটা ফোল্ডার আর রেপোযিটরির মধ্যে কোনো পার্থক্য নেই। &#8230;আসলে তা কিন্তু <strong>সত্যি নয়</strong> &#8211; পার্থক্য আছে।</p>



<span id="more-553"></span>



<p> একটা ফোল্ডারকে যখন আমরা গিট রেপোযিটরি বলি, তখন তার ভিতরে <code>.git</code> নামে একটা লুকানো বা হিডেন ফোল্ডার থাকে। এই ফোল্ডারটির মধ্যেই গিট তার যাবতীয় তথ্য, রেকর্ড সংরক্ষণ করে রাখে। কিভাবে এটি তৈরি করে নিতে হয়, আমরা তা ধীরে ধীরে জেনে যাব। আপাতত এগিয়ে যাওয়া যাক আমাদের মূল টিউটোরিয়ালে।</p>



<h4>ক্লাউড তৈরি করে নেয়া</h4>



<p>গিট নিয়ে কাজ করার জন্য আমাদেরকে বিনামূল্যে নিজেদের প্রজেক্ট আপলোড করার সুযোগ করে দিয়েছে github.com নামের ওয়েবসাইটটি (এরকম আরো অনেক গিট সাইট আছে)। আমরা তাই সেখানেই আমাদের রিমোট রেপোযিটরিটা রাখবো। এজন্য আমাদেরকে গিটহাবে বিনামূল্যে একটা অ্যাকাউন্ট খুলে নিতে হবে। নিজের ইমেইল ঠিকানা আর পাসওয়ার্ড দিয়ে গিটহাবে ঢুকে একটা নতুন রেপোযিটরি তৈরি করে ফেলা যাক। সময়ে সময়ে গিটহাবে নতুন পরিবর্তন হচ্ছে, আপাতত নামের পাশের যোগ চিহ্নে (+) ক্লিক করে New Repository চেপে নতুন রেপো তৈরি করে নিতে হবে। আমরা আপাতত git-tutorial নামে একটা রেপো তৈরি করে নিলাম, এবং নিচে README ফাইল যাতে যুক্ত হয় সেজন্য টিকচিহ্ন দিয়ে দিলাম। পাবলিক রেপো তৈরি করবো, কারণ প্রাইভেট রেপো তৈরি করতে খরচা করতে হবে। আমরা কাজ না বুঝে এখনই পয়সা ঢালতে রাজি না।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/github-account.png"><img decoding="async" width="773" height="478" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/github-account.png" alt="গিটহাবে রেপোযিটরি তৈরি করা" class="wp-image-563" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/github-account.png 773w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/github-account-300x186.png 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/github-account-768x475.png 768w" sizes="(max-width: 773px) 100vw, 773px" /></a><figcaption class="wp-element-caption">গিটহাবে রেপোযিটরি তৈরি করা</figcaption></figure></div>


<p>ব্যস আপনার প্রথম গিট রেপোযিটরি আপনার জন্য তৈরি। আমরা এখন এই রেপোযিটরিটাকে আমাদের পিসিতে clone করবো। ক্লোন করা মানে হলো হুবহু আরেকটা রূপ দেয়া &#8211; পৃথিবীতে প্রথম (১৯৯৬ খ্রি.) সফল ক্লোন করা ভেড়ার নাম ডলি, সে ছিল অন্য একটা ভেড়ার অবিকল আরেকটা সত্তা। আমাদের ক্ষেত্রেও বিষয়টা তা-ই। আমাদের সার্ভারে বা ক্লাউডে যা আছে, আমরা সেটাকে লোকাল পিসিতে অবিকল নামিয়ে আনবো। এজন্য আমাদেরকে এই রেপো&#8217;র path-টা নিতে হবে। এটা রেপোযিটরির ডানদিকে পাওয়া যাবে, সেখান থেকে কপি করে নিতে হবে।</p>


<div class="wp-block-image">
<figure class="alignright"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/contextual-menu-command.png"><img decoding="async" width="238" height="49" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/contextual-menu-command.png" alt="মাউসের ডান বোতামে গিট ব্যবহারের সরাসরি কমান্ড" class="wp-image-556"/></a></figure></div>


<p class="has-background" style="background-color:#c2ecdb"><strong>টিপ্‌স:</strong> যেখানেই থাকি না কেন git bash প্রথমে user-এর ফোল্ডারে খোলে। তারপর ডস কমান্ড লিখে লিখে নিজের কাঙ্ক্ষিত ফোল্ডারে যেতে হয়। কিন্তু আমরা গত পর্বে &#8216;ধর্তব্য ধাপ ২&#8217;-তে যে কাজটা করেছিলাম, তা আমাদের কাজকে আরো সহজ করে দিয়েছে। যেখানেই আছেন, খালি জায়গায় মাউসের ডান বোতাম ক্লিক করুন, লেখা দেখবেন: Git Bash Here। ক্লিক করুন, আর গিট ব্যাশ সরাসরি ঐ পাথেই খুলবে। যারা Windows XP SP2 ব্যবহার করছেন, তারা এটা না পেলে Windows Explorer মোডে বামদিকে যে ফোল্ডার ট্রি আসে, সেখানে ফোল্ডারের উপরে মাউসের ডান বোতামে এই কমান্ডটি পাবেন।</p>


<div class="wp-block-image">
<figure class="alignleft"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/https-url-github-nanodesigns.png"><img decoding="async" width="300" height="171" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/https-url-github-nanodesigns-300x171.png" alt="গিটহাবের গিট রেপো'র ইউআরএল কপি করা" class="wp-image-1149" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/https-url-github-nanodesigns-300x171.png 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/https-url-github-nanodesigns.png 380w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption class="wp-element-caption">গিটহাবের গিট রেপো&#8217;র ইউআরএল কপি করা</figcaption></figure></div>


<p>একটা Notepad খুলে লেখাটা পেস্ট করলে দেখা যাবে সেটা আসলে আমার ঐ রেপোযিটরির URL-ই, শুধু শেষে একটা .git [ডট গিট] যুক্ত আছে।</p>



<p>এবারে আমাদের পিসিতে Start মেনু থেকে Git Bash চালু করি। ধরা যাক আমরা ক্লোন করে ডেস্কটপে (desktop) রাখবো, তাই আমাদেরকে কমান্ড লিখে আগে ডেস্কটপে যেতে হবে &#8211; এটা গিটের অংশ না। যারা ডস মোডে কাজ করেছেন, তারা এটাতে খুব বেশি অভ্যস্থ। আর এগুলো গোণায়ই ধরা যায় না। আমরা নিচের মতো করে লিখলেই ডেস্কটপে চলে যেতে পারি- বলছি <em>change directory to desktop</em>:</p>



<pre class="wp-block-preformatted">cd desktop</pre>



<p>এন্টার চাপতেই আমরা ডেস্কটপে চলে এলাম। সত্যি এসেছি কিনা তা যাচাই করা যায় <code>pwd</code> কমান্ডটি লিখে এন্টার চাপলে।</p>



<h4>কোড ১: ক্লোন করে নেয়া</h4>



<p>যাহোক এবারে আমাদের রেপোযিটরি পাথ ব্যবহার করে আমরা সার্ভারে থাকা গিট রেপোযিটরিটিকে আমাদের ডেস্কটপে নিয়ে আসবো। এজন্য আমাদেরকে লিখতে হবে:</p>



<pre class="wp-block-preformatted">git clone https://github.com/mayeenulislam/git-tutorial.git</pre>



<div class="is-layout-constrained wp-block-group has-background" style="background-color:#c2ecdb"><div class="wp-block-group__inner-container"><div class="wp-block-image">
<figure class="alignright size-full is-resized"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-bash-copy-paste-nanodesigns.png"><img decoding="async" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-bash-copy-paste-nanodesigns.png" alt="গিট ব্যাশে কপি-পেস্ট ব্যবহারের পদ্ধতি" class="wp-image-557" width="129" height="153"/></a></figure></div>


<p><strong>টিপ্‌স:</strong>&nbsp;গিট ব্যাশে কোনো কিছু কপি-পেস্ট করা একটু সমস্যার। এজন্য ব্যাশের বাম দিকের উপরের টাইটেল বারের আইকনে ক্লিক করে বের হওয়া মেনুর Edit সাব মেনু থেকে সুবিধাগুলো ব্যবহার করা যাবে।</p>



<p>এছাড়া গিটের নতুন সংস্করণের সাথে পাওয়া গিট ব্যাশে&nbsp;<kbd>Insert</kbd>&nbsp;কী চাপলেও লেখা পেস্ট হবে।</p>
</div></div>


<div class="wp-block-image">
<figure class="alignleft is-resized"><a href="https://mayeenulislam.github.io/tuts/git-basics-2/git-clone-remote-repo/" rel="attachment wp-att-558"><img decoding="async" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-clone-remote-repo-300x160.png" alt="ক্লাউডে থাকা রেপো লোকালে ক্লোন করে নেয়া" class="wp-image-558" width="489" height="261" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-clone-remote-repo-300x160.png 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-clone-remote-repo.png 759w" sizes="(max-width: 489px) 100vw, 489px" /></a></figure></div>


<p>লক্ষ করুন, আমরা ওখান থেকে যে লিংকটা কপি করেছিলাম, তা এখানে পেস্ট করেছি। পেস্ট করতে কষ্ট হলে নোটপ্যাডে পেস্ট করে দেখে দেখে টাইপ করে নিন। এবারে এন্টার চাপলে সার্ভার থেকে গিট রেপোযিটরিটি আমাদের পিসিতে হুবহু নেমে যাবে। &#8230;কোথায় নামবে? যেখানে আমরা সর্বশেষ ছিলাম (<code>pwd</code> লিখে চেক করে দেখেছিলাম)। &#8230;ক্লোন হবার সময় ব্যাশ আমাদের দেখিয়েছে <code>Cloning into 'git-tutorial'...</code>, তার মানে ডেস্কটপে আমাদের রেপোযিটরিটা <code>git-tutorial</code> নামে তৈরি হয়েছে। আমরা ডেস্কটপে সেই ফোল্ডারটা দেখেও নিতে পারি। সুতরাং আমরা এখন ঐ ফোল্ডার বা রেপোযিটরিতে ব্যাশ ব্যবহার করে ঢুকতে চাইলে লিখবো:</p>



<pre class="wp-block-preformatted">cd git-tutorial</pre>



<p>আমরা এখন আমাদের সদ্য নামানো রেপোযিটরির ভিতরে আছি।</p>



<h4>কোড ২: গিট, তোমার খবর কী?</h4>



<p>এবারে আমরা জানতে চাচ্ছি, এই রেপোযিটরির খবর কী। গিটের হালচাল জানতে হলে বহুল ব্যবহৃত কমান্ডটি হলো:</p>



<pre class="wp-block-preformatted">git status</pre>



<p>উত্তরে গিট আমাদেরকে বলবে: <em>হ্যা, হ্যা, খবর খুব ভালো। তোমার গিট রেপোযিটরিটা সার্ভারের ওরিজিনাল রেপোযিটরির সাথে এক্কেবারে সাম্প্রতিক (up-to-date), কমিট করার কিচ্ছুই নেই, পুরোপুরি সাফ-সুতরো। 🙂</em></p>



<pre class="wp-block-preformatted">    On branch master
    Your branch is up-to-date with 'origin/master'.
    
    nothing to commit, working directory clean
</pre>



<p>আমরা কিন্তু দুটো কমান্ড ইতোমধ্যেই শিখে ফেলেছি। আর এটাও লক্ষ করেছি কিনা যে, গিটের অধিকাংশ কমান্ড শুরু হয় <code>git</code> লেখাটা দিয়েই। 🙂</p>



<p class="has-background" style="background-color:#c2ecdb"><strong>তথ্যকণিকা:</strong> এই যে রেপো&#8217;র ভিতরে গিয়ে <code>git status</code> লেখার সাথে সাথেই সে আপনাকে তথ্য দেখানো শুরু করলো, তার কারণ এটা একটা গিট রেপোযিটরি। আমরা যখন গিটহাবে রেপো বানানোর সময় README ফাইল যোগ করতে বলে দিয়েছিলাম, তখনই সে এটাকে একটা গিট রেপো বানিয়ে দিয়েছে। যদি আমাদের প্রজেক্টটি গিট রেপো বানানো না থাকতো, কিংবা একটা সাধারণ ফোল্ডারের ভিতর ঢুকে আমরা স্ট্যাটাস জানতে চাইতাম, তখন কিন্তু গিট আমাদেরকে কিচ্ছু বলতে পারতো না। আর তখনই আমাদেরকে আমাদের ফোল্ডারকে আগে গিট রেপো বানানো লাগতো। যেকোনো ফোল্ডারকে গিট রেপো বানানোর জন্য আপনাকে গিট ব্যাশে সেই ফোল্ডারে ঢুকে কোড লিখতে হবে <code>git init</code> — <em>গিটকে ইনিশিয়েট করো &#8211; চালু করো</em>। আর তখনই আমাদের শিখে আসা <code>.git</code> ফোল্ডারটি ঐ ফোল্ডারে তৈরি হয়ে নিজের কাজ শুরু করবে।</p>



<p>আমরা এবারে আসল ভার্সন কন্ট্রোল বা ভার্সন নিয়ন্ত্রণ করে দেখবো&#8230; আমাদের রেপোযিটরির ভিতরে একটা <code>index.html</code> ফাইল আছে। সেটা যদি আমরা টেক্সট এডিটরে খুলি, তাহলে নিচের মতো HTML কোড দেখা যাবে:</p>



<pre class="wp-block-preformatted">    &lt;html&gt;
        &lt;head&gt;&lt;title&gt;Test - nanodesigns&lt;/title&gt;&lt;/head&gt;
        &lt;body&gt;
            &lt;p&gt;This is a test file for git-tutorial repository.&lt;/p&gt;
        &lt;/body&gt;
    &lt;/html&gt;
</pre>



<p>ধরা যাক এটাই আমাদের ওয়েবসাইট, দারুণ সুন্দর একটা ওয়েবসাইট। আমরা করলাম কি, প্যারাগ্রাফ ট্যাগের শেষের ফুলস্টপটাই (.) শুধু ফেলে দিলাম। তারপর আবার ফাইলটা সেভ করলাম। তারমানে কি? আমাদের ফাইলে একটা পরিবর্তন করা হয়েছে। পরিবর্তনের পরিমাণ হিসেবে খুবই নগন্য (<em>হা হা হা, এটা কোনো পরিবর্তন হলো নাকি?</em>), কিন্তু তবু পরিবর্তন তো&#8230;। এবারে ব্যাশে ফিরে আসুন, আপনি আমাদের রেপো&#8217;র ভিতরে রয়েছেন, এবারে আবার গিটের হালচাল জানতে চান:</p>



<pre class="wp-block-preformatted">git status</pre>



<p>এবারে গিট লাল রং দিয়ে আমাদের test.html ফাইলটাকে দেখিয়ে বলবে: <em>এহ্‌হে, মডিফাই করা ফাইল পাওয়া গেছে, যা এখনও মঞ্চে তোলা হয়নি (not staged)</em>। ঠিকইতো, আমরা ফাইলটাতে পরিবর্তন করেছি, কিন্তু গিটের সাথে তো কোনো খেলাধুলা করিনি এপর্যন্ত।</p>



<h4>কোড ৩: মঞ্চে তোলো</h4>



<p>তাই এবারে গিটকে বলতে হবে, <em>গিট, হ্যা, ফাইলে পরিবর্তন যা তুমি দেখতে পাচ্ছো, তা ঠিকই আছে। এই পরিবর্তনকে এবার মঞ্চে নিয়ে এসো:</em></p>



<pre class="wp-block-preformatted">git add test.html</pre>



<p>আমরা গিটকে শুধুমাত্র <code>test.html</code> ফাইলটাকে মঞ্চে নিয়ে আসতে বললাম add বলার পরে ফাইলের নামটা লিখে। ধরা যাক, একবারে অনেকগুলো ফাইলে আমরা পরিবর্তন করলাম, তখন কি আমরা প্রত্যেকটা ফাইলের নাম ধরে ধরে এভাবে যোগ করে নিব? না তখন সব ফাইলকে এক কমান্ডে staged করে নেয়ার কমান্ড হলো <code>git add .</code> (<em>গিট অ্যাড ডট্‌</em>) কিংবা <code>git add -A</code>, অর্থাৎ, <em>গিট, সব (All) ফাইলকে যোগ করে নাও</em>। এবারে আবারও <code>git status</code> জানতে চাইলে সবুজ রঙে গিট আমাদের ফাইলটা দেখাবে: <em>হ্যা, তোমার পরিবর্তনটা মঞ্চে নিয়ে এসেছি (staged), এবারে তা কমিট করার অপেক্ষায়</em>। এবারে আমরা আমাদের পরিবর্তনটার একটা ছবি তুলে রাখবো।</p>



<h4>কোড ৪: ছবি তোলো</h4>



<p>&#8230;এই যে মঞ্চে তোলা বা যোগ করে নেয়া, একে বলা হয় stage করা। এর পরের ধাপটাই <em>ছবি তুলে রাখা</em> (snapshot)। তাহলে বুঝা গেল, staged না হলে, মঞ্চে আনা না হলে মডেলের snapshot নেয়া যায় না।</p>



<p>unstaged ফাইলকে staged করা হয়েছে, পর্দার পেছনের মডেলকে মঞ্চে আনা হয়েছে, এবারে আমাদের দরকার ছবিটা তুলে রাখা, আর একে গিট-এর ভাষায় বলে কমিট করা (commit)। আমরা গত পর্বে দেখেছিলাম, গিট আসলে ফাইল সংরক্ষণ করে না, ছবি তুলে রাখার মতোই ফাইলের অবস্থার রেকর্ড রাখে। কমিট করার মাধ্যমে আমরা আসলে গিটকে বলি: <em>গিট বাবাজি, করো&#8230;</em>। কী করবে? গিটের তো একটাই কাজ, ভার্সন নিয়ন্ত্রণ। সে তখন স্টেজ করা ফাইলগুলোর একটা রেকর্ড রেখে দিবে। এজন্য আমরা টাইপ করবো:</p>



<pre class="wp-block-preformatted">git commit -m "My first commit to learn git with nanodesigns"</pre>



<p>এই কোডে আমরা বললাম, <em>গিট, কমিট করো। [যাতে পরে চিনে নিতে পারি, তাই] কমিটটাকে একটা বার্তা (<code>-m</code>) দিয়ে সংরক্ষণ করে রাখো</em>। বুঝতেই পারছেন, পাশে ডাবল কোটের ভিতরে আমরা বার্তাটাই রেখেছি। &#8230;এবারে আবার <code>git status</code> টাইপ করে এন্টার চাপলে দেখাবে, <em>কমিট করার নতুন কিছুই নেই, প্রজেক্ট ফোল্ডার ফকফকা পরিষ্কার।</em></p>



<figure class="wp-block-image"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-commit-nanodesigns.png"><img decoding="async" width="668" height="386" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-commit-nanodesigns.png" alt="git-commit-nanodesigns" class="wp-image-559" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-commit-nanodesigns.png 668w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-commit-nanodesigns-300x173.png 300w" sizes="(max-width: 668px) 100vw, 668px" /></a></figure>



<p class="has-background" style="background-color:#c2ecdb"><strong>সম্পূর্ণ লোকালি গিট:</strong> বারবার একই কথা, গিট দিয়ে লোকালি কাজ করা যায়, ইন্টারনেটের দরকারই নেই। কিন্তু আমরা তো শুরুই করলাম github.com দিয়ে? <em>ক্যামনে কী?</em>। ডেস্কটপে একটা ফোল্ডার খুলুন, নাম দিন &#8216;test&#8217;। ভিতরে একটা টেক্সট ফাইল খুলুন, নাম দিন &#8216;test.txt&#8217;। ঐ ফোল্ডার পাথে git bash খুলুন। লিখুন <code>git init</code>। ব্যস, গিট রেপো তৈরি। এবারে <code>git add -A</code> আর <code>git commit -m "Test"</code>। আমরা সবই পারি&#8230; <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<h3>হাত নোংরা করি…</h3>



<p>এবারে পটাপট কয়েকবার অনুশীলন করা যাক—</p>



<ol>
<li>HTML ফাইলটা খুলে কিছু পরিবর্তন করে ফেলুন।</li>



<li>এবারে ব্যাশ খুলে লিখুন <code>git status</code>,</li>



<li>স্ট্যাটাস দেখা হয়ে গেলে লিখুন <code>git add test.html</code> কিংবা <code>git add -A</code>, ব্যস হয়ে গেল মঞ্চে তোলা বা স্টেজ করা</li>



<li>এবারে আরেকটা কমিট করতে লিখুন <code>git commit -m "Another commit"</code></li>



<li>আবার git status চেপে অবস্থা দেখুন</li>



<li>ফাইলটা আরো খানিকটা বদলে তারপর
<ul>
<li>স্টেজ করুন, তারপর</li>



<li>আরেকটা কমিট করুন।</li>
</ul>
</li>
</ol>



<p>…সহজ না? ব্যস, আপনার গিট শেখা শেষ। আপনি গিট শিখে গেছেন।</p>



<p>আপনি বলবেন: এক মিনিট; কোড শেখার কথা ছিল ৬টা, শেখা হলো ৪টা, বাকি দুটোর কী হবে? আসলে বাকি দুটো না হলেও আপনি লোকালি গিট ব্যবহার করে এভাবে ভার্সনের পর ভার্সন সংরক্ষণ করতে পারবেন। গিটের পুরো কাজটাই হয় লোকালি, একারণে গিট অনেক দ্রুত। এবং সত্যি কথা হলো, &#8216;তথ্যকণিকা&#8217; সাথে নিয়ে কোড ২, ৩, আর ৪ দিয়েই আপনি লোকালি ভার্সন নিয়ন্ত্রণ করতে পারবেন (সহায়তার দরকার হলে ডানের বাক্সটা দেখুন)। …তবে যেহেতু আমরা সার্ভার থেকে জিনিসপত্তর নামিয়ে নিয়েছিলাম, তাই সার্ভারে আবার সেটা তুলে দেয়ার বিষয় থাকতেই পারে। এজন্য দরকার হবে এই দুটো কমান্ড-</p>



<h4>কোড ৫: ধাক্কা মেরে তুলে দাও</h4>



<p>যেহেতু ইতোমধ্যে আমাদের রেপোযিটরিতে আমরা বেশ কিছু পরিবর্তন করে ফেলেছি, তাই এবারে আমাদের পরিবর্তনটাকে আমাদের সার্ভারে তুলে দেয়া যাক, তাহলে লোকাল পিসিতে কোনো সমস্যার কারণে (যেমন: হার্ডডিস্ক ক্র্যাশ করা) ভার্সনের রেকর্ডগুলো মুছে গেলে আমরা যেন সার্ভার থেকে আবার, বারবার, যখন দরকার Clone করে নিতে পারি। তো, আমাদের লোকাল রেপোতে করা যাবতীয় কমিট সার্ভারে তুলে দিতে হলে লিখতে হবে:</p>



<pre class="wp-block-preformatted">git push origin master</pre>



<p>অর্থাৎ, <em>গিট, মূল যেখান থেকে একে পেয়েছো, সেখানে একে ধাক্কা (push) দিয়ে তুলে দাও</em>। আমরা যখন ক্লোন করে রেখেছিলাম, তখনই সে তার খাতায় জানিয়ে রেখেছিল, তার মূল অস্তিত্ব যে সার্ভারে, সেখানে তার জন্ম হয়েছিল। তাই এখন যখন আমি origin master-এ তুলে দিতে বলেছি, সে বুঝে গেছে, কোন অরিজিনাল মাস্টারে তাকে তুলতে বলেছি।</p>



<figure class="wp-block-image"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-push-origin-master-nanodesigns.png"><img decoding="async" width="668" height="384" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-push-origin-master-nanodesigns.png" alt="গিট পুশ ব্যবহার করে গিটহাব রেপোতে আপলোড" class="wp-image-561" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-push-origin-master-nanodesigns.png 668w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-push-origin-master-nanodesigns-300x172.png 300w" sizes="(max-width: 668px) 100vw, 668px" /></a></figure>



<p>গিট তখন আমার গিটহাবের ব্যবহারকারী নাম আর পাসওয়ার্ড জানতে চাইলো, আমি লিখলাম, তারপর এন্টার চাপতেই সে আমার লোকাল পিসিতে করা পরিবর্তনটা সার্ভারে তুলে নিয়ে সার্ভারের রেপোটাকেও সাম্প্রতিক করে নিলো। আমরা সেটা যাচাইও করে নিলাম গিটের হালহকিকত জিজ্ঞেস করে।</p>



<h4>কোড ৬: টান দিয়ে নামিয়ে নাও</h4>



<p>যদি একই রেপোযিটরিতে আপনার বন্ধু কিংবা সহকর্মীও কিছু পরিবর্তন করে থাকেন, তাহলে সেটা আপনার লোকাল পিসিতে থাকার কথা না, কারণ আপনার বন্ধু আপনারই মতো প্রথমে ক্লোন করেছেন, তারপর তাঁর লোকাল পিসিতে কমিট করে তা সার্ভারে push করেছেন। পরদিন আপনি যখন কাজ শুরু করতে বসলেন, তখন যদি আপনি লোকাল পিসিতে থাকা ভার্সন নিয়েই কাজ শুরু করেন, তাহলে আপনার বন্ধু যে আরো কাজ এগিয়ে রেখেছিলেন, তা আপনি পেলেন না, হয়তো আবার আপনি একই কাজই করলেন বসে বসে, শ্রেফ একটা পণ্ডশ্রম হলো। এই ঝামেলা যাতে না হয়, সেজন্য আপনি পরদিন কাজ শুরুর আগে যে কাজটা করবেন, গিটকে বলবেন <em>গিট, টান দিয়ে নামাও আগে&#8230;</em>।</p>



<pre class="wp-block-preformatted">git pull</pre>



<figure class="wp-block-image"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-pull-nanodesigns.png"><img decoding="async" width="669" height="389" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-pull-nanodesigns.png" alt="গিট পুল ব্যবহার করে গিটহাব রেপো থেকে পরিবর্তন লোকালে নামানো" class="wp-image-560" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-pull-nanodesigns.png 669w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/11/git-pull-nanodesigns-300x174.png 300w" sizes="(max-width: 669px) 100vw, 669px" /></a></figure>



<p>ব্যস, আপনার বন্ধুর/সহকর্মীর করা কাজ এবারে আপনার রেপোতেও আপডেট হয়ে গেল, এবারে আপনি নিশ্চিন্তে এগিয়ে যাওয়া কাজের উপর কাজ করে আরো এগিয়ে নিতে পারেন কাজকে। তারপর আবার push করে দিলেই আপনার বন্ধুও ওখান থেকে pull করে আপনার আপডেটগুলো পেয়ে যাবেন।</p>



<p>ব্যস, গিট আমাদের আয়ত্বে এসে গেছে। এবারে একে এগিয়ে নিতে হবে আরো অনেকদূর। আজ যে পথচলা শুরু হলো, এটা তো শুরু মাত্র। আমাদের জানার শেষ নেই। merge করা, merge conflict দূর করা, branch নিয়ে কাজ করা, প্রাইভেট রেপোতে কাজ করা, fetch করা, ফেচ করা তথ্যের সাথে পার্থক্য দেখা, অন্যের রেপোতে কাজ করা&#8230; কত রকম কাজ এখনও বাকি&#8230;। তাই এপর্যায়ে বোধহয় একটা উপযুক্ত সময় হয়েছে Scott Chacon-এর গিট পরিচিতিমূলক বক্তৃতাটা দেখে নেয়ার (এই ভিডিওটার লিংক দিয়ে বন্ধু নাজমুস সাকিব সর্বপ্রথম আমার গিট শেখার সূচনা করে, অবশ্য প্রথম হিসেবে একটু কঠিনই লাগছিল, কিন্তু এবারে আপনাদের আর কঠিন লাগবে না):</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Introduction to Git with Scott Chacon of GitHub" width="720" height="405" src="https://www.youtube.com/embed/ZDR433b0HJY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div></figure>



<p><strong>মঈনুল ইসলাম</strong><br><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a rel="noreferrer noopener" href="https://mayeenulislam.github.io/" target="_blank">mayeenulislam.github.io</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3>আরো তথ্য</h3>



<ul>
<li><a href="https://medium.com/@pierreda/understanding-git-for-real-by-exploring-the-git-directory-1e079c15b807" target="_blank" rel="noopener">Understanding git for real by exploring the .git directory &#8211;&nbsp;<em>Pierre de Wulf</em> (Medium.com)</a> &#8211; .git ফোল্ডারটি ঘুরে ঘুরে দেখা যেতে পারে, medium-এ প্রকাশিত এই টিউটোরিয়াল দেখে নিলে।</li>
</ul>



<p class="has-small-font-size"><strong>হালানাগাদ:</strong> ৬ আগস্ট ২০১৭</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/git-basics-2/">গিট ব্যবহারের একেবারে প্রাথমিক জ্ঞান : পর্ব ২</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mayeenulislam.github.io/tuts/git-basics-2/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
		<item>
		<title>গিট ব্যবহারের একেবারে প্রাথমিক জ্ঞান : পর্ব ১</title>
		<link>https://mayeenulislam.github.io/tuts/git-basics-1/</link>
					<comments>https://mayeenulislam.github.io/tuts/git-basics-1/#comments</comments>
		
		<dc:creator><![CDATA[মঈনুল ইসলাম]]></dc:creator>
		<pubDate>Thu, 06 Nov 2014 14:03:14 +0000</pubDate>
				<category><![CDATA[গিট টিউটোরিয়াল]]></category>
		<category><![CDATA[জ্ঞান-স্তরভিত্তিক টিউটোরিয়াল]]></category>
		<category><![CDATA[ন্যানো বেসিX]]></category>
		<category><![CDATA[প্রাথমিক স্তরের টিউটোরিয়াল]]></category>
		<category><![CDATA[গিট]]></category>
		<category><![CDATA[গিট ব্যবহারের কৌশল]]></category>
		<category><![CDATA[গিট শেখা]]></category>
		<category><![CDATA[গিটহাব]]></category>
		<category><![CDATA[ভার্ষন কন্ট্রোল]]></category>
		<guid isPermaLink="false">https://mayeenulislam.github.io/tuts/?p=491</guid>

					<description><![CDATA[<p>গিট কী? কিভাবে গিট ব্যবহার করতে হয়? গিটহাব জিনিসটাইবা কী? কিভাবে গিট শিখবো? ...এই গিট আমরা শিখবো মাত্র ৬টা কমান্ড দিয়ে ইনশাল্লাহ... স্বাগতম</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/git-basics-1/">গিট ব্যবহারের একেবারে প্রাথমিক জ্ঞান : পর্ব ১</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="alignright"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/git-logo.png"><img decoding="async" width="151" height="273" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/git-logo.png" alt="গিট-এর লগো" class="wp-image-493"/></a></figure></div>


<p><strong>গিট (Git)</strong> হলো হাল আমলের সবচেয়ে প্রসিদ্ধ এবং জনপ্রিয় ভার্সন নিয়ন্ত্রণ সফ্‌টওয়্যার। &#8230;ভার্সন কন্ট্রোল বা ভার্সন নিয়ন্ত্রণ কী &#8211; আমরা সেটা দেখবো। আমরা যেহেতু একেবারে প্রাথমিক আলোচনা করছি, তাই অনেক বিষয়ই জানা থাকলেও একটু না একটু আলোচনা করতেই হবে, ধারণা পরিষ্কার হবে, আমরা বিষয়টা বুঝবোও সহজে। মনে রাখতে হবে, এপৃথিবীর সবকিছুর মূলে রয়েছে কিছু কনসেপ্ট বা ধারণা। ধারণাটা বুঝে ফেললে বাকি সব পানিভাত। Git নামটা বুঝার আগে আমি GitHub নামটা শুনেছিলাম, এবং এই দুটোর মধ্যে কোনো পার্থক্য করতে পারতাম না প্রথম প্রথম। আপনাদের মনেও যদি এই প্রশ্নটা থাকে, তাও আমরা পরিষ্কার করবো ইনশাল্লাহ। তবে শর্ত হলো দুটো &#8211;</p>



<ol>
<li>যদি জানতে হয়, শিখতে হয়, পুরো লেখাটা দুই পর্বেরই শেষ পর্যন্ত পড়তে হবে।</li>



<li>আমার প্রতি বিশ্বাস রাখুন, খুব সহজে, সংক্ষেপে গিট বুঝাতে চলেছি, এবং আমার মতো মোটা মাথায় যদি ঢুকতে পারে, আপনাদের জন্য তো চিন্তারই কারণ নেই।</li>
</ol>



<h3>সংক্ষেপে বলো &#8211; সহজে বলো</h3>



<p><em>গিট সম্পর্কে জানতে হলে কি আপনার এইসব ফিরিস্তি পড়তে হবে বসে বসে?</em> &#8230;মোট্টেই না।</p>



<p> অনেকেই গিট শেখার ভিডিও আপলোড করেছেন, অনেক ওয়েবসাইট আছে বিনামূল্যে গিট শিখাবে হাতে ধরে ধরে, অনেক বই আছে গিট-এর উপর। যদি লম্বা কথা পড়ে পড়ে শেখার কোনো ইচ্ছা না থাকে, তাহলে সেগুলো তো দেখা যায়ই-</p>



<ul>
<li><a title="Progit by Scott Chacon - PDF" href="https://progit2.s3.amazonaws.com/en/2014-11-04-ef9e4/progit-en.93.pdf" target="_blank" rel="nofollow noopener">গিট-এর উপর Scott Chacon-এর সম্পূর্ণ বই &#8211; <em>Pro Git</em> &#8211; বিনামূল্যে ডাউনলোড করুন</a></li>



<li><a title="Git Online Tutorial" href="http://try.github.io/" target="_blank" rel="nofollow noopener">অনলাইনে বসে হাতে-কলমে গিট শিখুন &#8211; Try Git থেকে</a></li>



<li><a title="গেটিং গিট রাইট - অ্যাটলাশিয়ান" href="https://www.atlassian.com/git/" target="_blank" rel="nofollow noopener">অ্যাটলাশিয়ান-এর গিট টিউটোরিয়াল</a></li>



<li><a href="https://youtube.com/playlist?list=PLoR56CteKZnC0lBlHdnVnq0J3yDhgbi9w" target="_blank" rel="nofollow noopener">গিট পরিচিতি</a> &#8211; হাসিন হায়দার &#8211; shell ব্যবহার করে গিট ব্যবহারের উপর বাংলায় ভিডিও টিউটোরিয়াল</li>
</ul>



<h3>ভার্সন নিয়ন্ত্রণ কী</h3>



<p>গিট বুঝতে গেলে একটু বুঝে নেয়া দরকার, ভার্সন নিয়ন্ত্রণ বিষয়টা কী। সহজে বলতে গেলে নিচের টেক্সট ফাইলটি (<code>Readme.txt</code>) দেখা যাক:</p>



<figure class="wp-block-table"><table><tbody><tr><td><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/readme-icon.png"><img decoding="async" class="aligncenter wp-image-494" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/readme-icon.png" alt="Readme.txt ফাইলের আইকন" width="45" height="65"></a></td><th>20140919~15:03:40</th><td>This is a readme file</td></tr><tr><td><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/readme-icon.png"><img decoding="async" class="aligncenter wp-image-494" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/readme-icon.png" alt="Readme.txt ফাইলের আইকন" width="45" height="65"></a></td><th>20140919~15:04:27</th><td>A readme file that is changed from its original state</td></tr><tr><td><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/readme-icon.png"><img decoding="async" class="aligncenter wp-image-494" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/readme-icon.png" alt="Readme.txt ফাইলের আইকন" width="45" height="65"></a></td><th>20140919~15:04:55</th><td>A readme file that is changed from its original state. And something appended after the first paragraph.</td></tr></tbody></table></figure>



<p>এই টেক্সট ফাইলটিকে আমরা একটা ছোট্ট উদাহরণ হিসেবে নিয়েছি। এখানে আপনারা ভালো করে লক্ষ করলে দেখবেন তিনটা আলাদা আলাদা সময়ের উল্লেখ আছে, যদিও তারিখটা একই আছে। তিনটা আলাদা সময়ে ফাইলটাতে তিনটা আলাদা পরিবর্তন হয়েছে। প্রথম সময়ে (15:03:40) যে লেখাটা ছিল, পরের সময়েই (15:04:27) সেই লেখাটা প্রায় পুরোপুরি বদলে ফেলা হয়েছে (মানে বাদ দিয়ে, যোগ করা হয়েছে)। আবার তার পরের সময়ে (15:04:55) দ্বিতীয় লেখাটা না ছুঁয়ে তার সাথে নতুন কিছু যোগ করা হয়েছে। মনে রাখতে হবে, এই তিনটা পরিবর্তনই কিন্তু একই ফাইলে হয়েছে, শুধু পার্থক্য হলো, এগুলো বিভিন্ন সময়ে হয়েছে। এখন আমরা এই তিনটা সময়কে যদি এই ফাইলটার তিনটা আলাদা আলাদা অবস্থা ধরে নিই, তাহলে তা-ই কিন্তু ভার্সন (version)।</p>



<p>আমাদের ফাইলটি এখন খুললে আমরা কোন অবস্থায় পাবো, মানে কোন ভার্সনে পাবো? অবশ্যই সর্বশেষ ভার্সনে, মানে 15:04:55 সময়ে আপডেট করা ভার্সনটি। কিন্তু ধরা যাক, কোনো কারণে আমাদের প্রথম বাক্যটার (A readme file that is&#8230;) জায়গায় দরকার একেবারে প্রথমে যে বাক্যটা লিখেছিলাম, সেই বাক্যটা (মানে: This is a readme file বাক্যটা)। এখন তাহলে কোথায় পাবো সেটা? &#8230;কোত্থাও পাওয়া যাবে না, কারণ ফাইলটার পুরোন সেই লেখাটা এখন আর ফাইলে নেই &#8211; ঐ লেখাটা মুছেইতো সর্বশেষ অবস্থা পেলাম। &#8230;এজন্যই দরকার পড়ে ভার্সন কন্ট্রোল বা ভার্সন নিয়ন্ত্রণের, যেখানে আমাদের পুরোন কাজগুলো কখন কেমন ছিল, তার একটা রূপ আমরা পরেও দরকার পড়লে পাই। আবার এমনও হতে পারে, ফাইলের সব লেখা মুছে কেউ সব উল্টাপাল্টা করে ফেললো, তখন ফাইলের বিভিন্ন ভার্সন থাকলে আমরা পুরোন ভার্সনটাতে ফাইলটাকে ফিরিয়ে নিয়ে গিয়ে বিপদ থেকে উদ্ধার পাবো সহজে। এই কালানুগ কিংবা অবস্থানুগ পরিবর্তনের চিত্রটাই হলো ভার্সন, আর উপরে বর্ণিত কারণগুলোর জন্যই মূলত আমাদের ভার্সন নিয়ন্ত্রণের দরকার পড়ে।</p>



<p>আমরা যারা কোড লিখি, ভার্সন নিয়ন্ত্রণ করাটা তাদের খুব কাজে লাগে। হয়তো তিন মাস আগের করা কোনো কাজ, যা পরে ফেলে দিয়েছিলাম, তা-ই আজকে অন্য এক জায়গায় কাজে লাগছে &#8211; তখন পুরোন ভার্সন থেকে আমরা সেটা পেয়ে যেতে পারি। আর, এখন এই গ্লোবালাইজেশনের যুগে আমাদেরকে কখনও কখনও নিজের গন্ডির বাইরেও অন্য কোনো কোডারের সাথে মিলেমিশে কাজ করতে হয়। তখন নিজেদের কাজগুলো এক জায়গায় রেখে দুজনের কাজকে বুঝে-শুনে একত্র করে করে এগিয়ে যাওয়ার একটা দারুণ উপায় হলো ভার্সন নিয়ন্ত্রণ &#8211; বিশেষ করে ডিস্ট্রিবিউটেড ভার্সন নিয়ন্ত্রণ &#8211; যা গিট-এর মাধ্যমে আরো বেগবান হয়েছে। আবার একই অফিসে একাধিক ডেভলপার একই প্রজেক্টে মিলেমিশে কাজ করলেও গিটের তুলনা নেই, তখন একই কাজের পূণরাবৃত্তি রোধ করে যার যার অবস্থান থেকে কাজকে এগিয়ে নিয়ে যাওয়া যায় খুব সহজেই।</p>



<h3>ভার্সন নিয়ন্ত্রণের পুরোন পদ্ধতি ফেলে এখন যখন গিট</h3>



<span id="more-491"></span>


<div class="wp-block-image">
<figure class="alignright"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/git-vs-contemporary-vcs.png"><img decoding="async" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/git-vs-contemporary-vcs-300x259.png" alt="অন্যান্য ভার্সন নিয়ন্ত্রণ পদ্ধতির সাথে গিট-এর তুলনা [স্কট চ্যাকন-এর ভিডিও ব্রিফ থেকে স্ক্রিনশট নেয়া]" class="wp-image-499"/></a><figcaption class="wp-element-caption">অন্যান্য ভার্সন নিয়ন্ত্রণ পদ্ধতির সাথে গিট-এর তুলনা [স্কট চ্যাকন-এর ভিডিও ব্রিফ থেকে স্ক্রিনশট নেয়া]</figcaption></figure></div>


<p><em>এই বিষয়টাও কি জানা লাগবে?</em> সত্যি বলতে কি এই বিষয়টাতে একটা মজার ব্যাপার আছে। উপরে ভার্সন নিয়ন্ত্রণ সম্পর্কে আমরা যে ধারণা পেয়েছি, সেই ধারণা অনুযায়ী আপনাকে যদি আপনার ফাইলের ভার্সন নিয়ন্ত্রণ করতে বলা হয়, কী করবেন আপনি? খুব সহজেই করা যায় &#8211; প্রথম লাইনটা লিখে ফাইলটার একটা কপি আলাদা একটা ফোল্ডারে রেখে দিব। তারপর ফাইলটাতে দ্বিতীয় লাইনটা লিখবো, তারপর আরেকটা নতুন ফোল্ডারে ফাইলটা রেখে দিব। এভাবে তিনবার করলে আমাদের একই ফাইলের তিনটা আলাদা আলাদা অবস্থার তিনটা ভার্সন থাকছে &#8211; সব সমস্যা সমাধান! হ্যা, প্রথম দিকে আপনার মতো করেই বিষয়টাকে দেখা হতো &#8211; আর আগেকার ভার্সন নিয়ন্ত্রণ হতোও এই ধারণার উপর, যেমন: SVN। গিট আসার আগে এসভিএন খুব জনপ্রিয় ছিল, যেখানে প্রতিটা আলাদা আলাদা অবস্থার জন্য একেকটা আলাদা আলাদা ফাইল কিংবা লগ রেখে দেয়া হতো ব্যাকআপ হিসেবে। &#8230;এবং সমস্যাটা সেখানেই।</p>



<p>আপনি যে ফাইলে কাজ করেছেন, সেই ফাইলটা ছাড়াও এখন আরো তিনটা ফাইল আপনার হয়ে গেছে। যদি একেকটা ফাইলের আকার 1kb করে হয়, তাহলে আপনার ডিস্কে এখন 4kb (মূল ফাইল + তিনটা ভার্সন) জায়গা জোড়া হয়ে গেছে। বিষয়টা বড় ফাইলের ক্ষেত্রে হলে কী হবে আশা করি আর বুঝিয়ে বলা লাগবে না। আর এখানেই গিট-এর কৃতিত্ব। <strong>গিট এই পদ্ধতিতে ভার্সন নিয়ন্ত্রণ করে না।</strong></p>



<p>গিট এসে বললো কি, <em>আচ্ছা, ভালো করে দেখুন তো, আমাদের ফাইল কি এখানে চারটা? &#8230;না। বরং একটা ফাইলেরই চারটা আলাদা অবস্থা। এক কাজ করি, প্রথম অবস্থার একটা ছবি তুলে রাখি, তারপর আরেকটা, তারপর আরো একটা ছবি (snapshot) তুলে রাখলেই তো হয় &#8211; সব অবস্থার একেকটা ছবি পাওয়া যায়&#8230;।</em> আর গিট করলোও তাই। ফাইলের পর ফাইল জমা না করে গিট করলো কি প্রত্যেকটা অবস্থার একেকটা ছবি তুলে রাখার মতো করে রেকর্ড জমা করে রাখলো, ফলে দেখা গেল, সেই রেকর্ডগুলো দেখলেই আমরা ফাইলের পরিবর্তনটা বুঝতে পারি, গাদা গাদা ফাইল জমা করে রাখার দরকার পড়ে না। একারণেই গিট একটি মডার্ন ভার্সন নিয়ন্ত্রণ পদ্ধতি আর সবাই তাকে গ্রহণও করেছে সাদরে।</p>



<h3>একটু পরিচিতি&#8230;</h3>



<p>একটু বলে নেয়া দরকার, গিট দিয়ে ভার্সন নিয়ন্ত্রণের পুরো বিষয়টাতে আপনার ইন্টারনেট সংযোগ থাকার কিন্তু কোনো দরকার নেই। পুরো বিষয়টাই হয় লোকালি, মানে আপনার পিসিতেই, তাই গিট অনেক দ্রুততর। কিন্তু আপনার যদি নিজের গন্ডির বাইরে কারো সাথে কোড শেয়ার করতে হয়, তখন তো স্বাভাবিকভাবেই ক্লাউডে একটু জায়গা আর যোগাযোগের বিষয়টি থাকবে &#8211; মানে তখন দরকার হবে ইন্টারনেট বা নেটওয়ার্ক ব্যবস্থা। আমাদের জন্য সেরকমই একটা বিনামূল্যের ক্লাউড হলো github.com, যা আসলে সোর্স কোড তুলে রাখার একটা জায়গা, যেখানে গিট দিয়ে ভার্সন নিয়ন্ত্রণ ছাড়াও অন্যান্য কোডারদের সাথে যোগাযোগ, উইকি, কোড সংক্রান্ত ফোরাম ইত্যাদি সুবিধা রয়েছে। তাহলে বোঝা গেল, git হলো ভার্সন নিয়ন্ত্রণের একটা প্রোগ্রাম বা সফ্‌টওয়্যার, আর গিটহাব হলো একটা ওয়েবসাইট, যেখানে গিট ব্যবহার করে ভার্সন নিয়ন্ত্রণ ছাড়াও সামাজিক কোডিং ধারণার মতো একটা ব্যাপার কাজ করে। গিটহাবের লগো বা প্রতীক হলো একটা অক্টোপাস।</p>



<p>গিট নিয়ে কাজ করতে দেখলেই আমরা দেখি অনেক অনেক কোড লেখালেখি, আসলে এটাই হলো গিট নিয়ে কাজ করার সহজতর পন্থা (<em>আমি কি &#8216;সহজতর পন্থা&#8217; বলিনি?</em>)। কিন্তু এছাড়াও গিট ব্যবহারের অনেক GUI বা Graphical User Interface বা দেখে-দেখে-ক্লিক-করে-করে-কাজ-করার প্রোগ্রাম রয়েছে, কিন্তু সেগুলো এখনও হয়তো অতটা সম্পূর্ণ না এবং অনেক ক্ষেত্রে সেগুলোতে সীমাবদ্ধতা আছে, তাই কোডাররা কোড লিখে কাজ করাকেই বেশি পছন্দ করেন। এবং GUI পদ্ধতিতে কাজ করলে একটা সমস্যা হলো একজন এই ইন্টারফেস পছন্দ করেন তো আরেকজন অন্য ইন্টারফেস পছন্দ করেন, তখন আপনার জন্য নিজের অবস্থান তৈরি করাটা কষ্টকর হয়ে উঠতে পারে। কিন্তু যে যেই ইন্টারফেসেই স্বচ্ছন্দবোধ করুন না কেন, যদি তাঁর গিট কোড জানা থাকে, তাহলে যেকোনো পরিবেশ-পরিস্থিতিতেই স্বাভাবিকভাবে, স্বচ্ছন্দে কোড করতে পারবেন তিনি। তাই আমরা আসলে ঐসব ইন্টারফেসভিত্তিক গিট না শিখে খুব সহজে কোড লিখে গিট শিখে নিব।</p>



<h3>গিট ব্যাশ &#8211; কোড লিখে ভার্সন নিয়ন্ত্রণ</h3>



<p>ইংরেজিতে Git Bash লেখা বলে অনেকে একে &#8216;গিট বাশ&#8217; বলেন, কিন্তু আসলে উচ্চারণটা &#8216;গিট ব্যাশ&#8217; হবে। গিট ব্যাশ হলো কমান্ড লাইনে, মানে কোড লিখে গিট ব্যবহার করার পদ্ধতি। এটা গিট ইন্সটল করার সময়ই ইন্সটল করে নেয়া যায়, অথবা উইন্ডোজের সাথে থাকা ডস মোডের কমান্ড প্রম্পট (ম্যাক-এর ক্ষেত্রে টার্মিনাল) ব্যবহার করেও কোড করা যায়। আমরা যেহেতু কোড মোডে কাজ করবো, তাই আমরা গিট ব্যাশ ইন্সটল করে নিবো গিট ইন্সটল করার সময়ই।</p>



<h3>গিট ইন্সটল করা</h3>



<p>মাইক্রোসফ্‌ট অফিস ব্যবহার করতে হলে যেমন তা ইন্সটল করে নিতে হয়, গিট ব্যবহার করার জন্যও তা ইন্সটল করে নিতে হয় &#8211; তবে গিট সফ্‌টওয়্যারটা যথেষ্ট হালকা। এজন্য আমাদেরকে নিচের URL থেকে গিট-এর সাম্প্রতিক সংস্করণটি ডাউনলোড করে নিতে হবে:</p>



<p><a href="https://git-scm.com/downloads" data-type="URL" data-id="https://git-scm.com/downloads" target="_blank" rel="noreferrer noopener"><strong>git-scm.com/downloads</strong></a></p>



<p><strong>ধর্তব্য ধাপ ১:</strong> ডাউনলোড করা ইন্সটলারটি চালু করলে Next চেপে চেপে এগোলে নিচের মতো একটি পর্দা আসবে। এখানে আপনাকে, গিট কোথায় ইনস্টল হবে, তা দেখিয়ে দিতে হবে। C:\ ড্রাইভে ইন্সটল করতেই হবে &#8211; এরকম কোনো বাধ্যবাধকতা নেই।</p>



<figure class="wp-block-image"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/install-git-on-windows-01.png"><img decoding="async" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/install-git-on-windows-01-300x233.png" alt="উইন্ডোজে গিট ইনস্টল : ধাপ ১" class="wp-image-495"/></a></figure>



<p></p>



<p><strong>ধর্তব্য ধাপ ২:</strong> Next চাপলে আরেকটি পর্দা আসবে, যেখানে আপনাকে গিট-এর কম্পোনেন্ট মানে দরকারি অংশগুলো বাছাই করে নিতে হবে। এখানে আপনি Windows Explorer Integration অংশে Git Bash here এবং Git GUI here পছন্দ করে নিন &#8211; আমরা ব্যাশ নিয়ে কাজ করলেও GUI-টা পাশাপাশি থাকবে, এবং ঠিকমতো ইন্সটল হলে মাউসের রাইট বাটনের সাথে এই দুটো অপশন যোগ হয়ে যাবে। Next চাপুন।</p>



<figure class="wp-block-image"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/install-git-on-windows-02.png"><img decoding="async" width="300" height="233" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/install-git-on-windows-02-300x233.png" alt="উইন্ডোজে গিট ইনস্টল : ধাপ ২" class="wp-image-498" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/install-git-on-windows-02-300x233.png 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/install-git-on-windows-02.png 505w" sizes="(max-width: 300px) 100vw, 300px" /></a></figure>



<p></p>



<p><strong>ধর্তব্য ধাপ ৩:</strong> PATH বাছাই পাতায় Use Git from Git Bash only বাছাই করে Next চাপুন।</p>



<figure class="wp-block-image"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/install-git-on-windows-03.png"><img decoding="async" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/install-git-on-windows-03-300x233.png" alt="উইন্ডোজে গিট ইনস্টল : ধাপ ৩" class="wp-image-496"/></a></figure>



<p></p>



<p><strong>ধর্তব্য ধাপ ৪:</strong> Line ending conversions-এ Checkout Windows-style, commit Unix-style line endings বাছাই করে Next চাপুন।</p>



<figure class="wp-block-image"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/install-git-on-windows-04.png"><img decoding="async" width="300" height="233" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/install-git-on-windows-04-300x233.png" alt="উইন্ডোজে গিট ইনস্টল : ধাপ ৪" class="wp-image-497" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/install-git-on-windows-04-300x233.png 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/10/install-git-on-windows-04.png 505w" sizes="(max-width: 300px) 100vw, 300px" /></a></figure>



<p></p>



<p>ব্যস, গিট ইন্সটল হয়ে গেল।</p>



<p>এবারে গিটকে নিজের, সম্পূর্ণ আপন করে নেয়ার পালা। Start » Git » Git Bash-এ ক্লিক করুন। ব্যস, উইন্ডোজের ডস মোডের মতো একটা কমান্ড কনসোল খুলবে, এখানেই আমরা কাজ শুরু করবো। গিটকে আপন করে নেবার জন্য দুটো কাজ করতে হবে:</p>



<ul>
<li>গিটকে নিজের নামটা বলে দেয়া</li>



<li>গিটকে নিজের ইমেইল ঠিকানাটা দিয়ে দেয়া</li>
</ul>



<p>ধরা যাক আমার নাম <code>Someone</code> আর ইমেইল ঠিকানা হলো <code>someone@example.com</code>, তাহলে যা লিখতে হবে-</p>



<pre class="wp-block-preformatted">git config --global user.name "Someone"
git config --global user.email "someone@example.com"
</pre>



<p>ব্যস গিট এবার আপনার, শ্রেফ আপনার জন্য প্রস্তুত। <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> এই কাজটা বারবার করতে হবে না, ব্যস এই একবারই।</p>



<p>গিট ব্যবহারের প্রাথমিক জ্ঞানের আজকের আলোচনা এই পর্যন্তই। এখানে আমরা গিট সম্পর্কে প্রায় সম্পূর্ণ অন্তর্নিহীত ধারণা পেয়ে গেলাম। আগামী পর্বে আমরা গিট ব্যবহার করে ভার্সন নিয়ন্ত্রণ করা শিখে নিব মাত্র ৬টা কমান্ড দিয়ে, ইনশাল্লাহ।</p>



<p>আগামী পর্বে সমাপ্য&#8230;</p>



<p class="has-text-align-right"><strong><a href="https://mayeenulislam.github.io/tuts/git-basics-2/">পরের পর্ব »</a></strong></p>



<p>&#8211; <strong>মঈনুল ইসলাম</strong><br><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a rel="noreferrer noopener" href="https://mayeenulislam.github.io/" target="_blank">mayeenulislam.github.io</a></p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/git-basics-1/">গিট ব্যবহারের একেবারে প্রাথমিক জ্ঞান : পর্ব ১</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mayeenulislam.github.io/tuts/git-basics-1/feed/</wfw:commentRss>
			<slash:comments>18</slash:comments>
		
		
			</item>
		<item>
		<title>ওয়ার্ডপ্রেস ফ্রন্টএন্ড ও ব্যাকএন্ডে ফেভিকন যোগ</title>
		<link>https://mayeenulislam.github.io/tuts/wordpress-favicon/</link>
					<comments>https://mayeenulislam.github.io/tuts/wordpress-favicon/#respond</comments>
		
		<dc:creator><![CDATA[মঈনুল ইসলাম]]></dc:creator>
		<pubDate>Sat, 12 Apr 2014 17:01:29 +0000</pubDate>
				<category><![CDATA[ওয়ার্ডপ্রেস টিউটোরিয়াল]]></category>
		<category><![CDATA[ওয়েব ডেভলপমেন্ট টিউটোরিয়াল]]></category>
		<category><![CDATA[জ্ঞান-স্তরভিত্তিক টিউটোরিয়াল]]></category>
		<category><![CDATA[থিম টিউটোরিয়াল]]></category>
		<category><![CDATA[প্রাথমিক স্তরের টিউটোরিয়াল]]></category>
		<category><![CDATA[প্লাগইন টিউটোরিয়াল]]></category>
		<category><![CDATA[মাধ্যমিক স্তরের টিউটোরিয়াল]]></category>
		<guid isPermaLink="false">https://mayeenulislam.github.io/tuts/?p=445</guid>

					<description><![CDATA[<p> [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/wordpress-favicon/">ওয়ার্ডপ্রেস ফ্রন্টএন্ড ও ব্যাকএন্ডে ফেভিকন যোগ</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="has-text-align-center has-background" style="background-color:#fed6df"><strong>হালনাগাদ: জুন ৪, ২০১৬:</strong> ওয়ার্ডপ্রেস <a href="https://codex.wordpress.org/Creating_a_Favicon#WordPress_Version_4.3_or_later" target="_blank" rel="noopener">৪.৩ সংস্করণ</a> থেকে কাস্টোমাইযার ব্যবহার করে লগো আপলোডের সুবিধা যোগ করা হয়েছে এবং এই লগোই সাইটের জন্য ফেভিকনের কাজ করে। সুতরাং এই টিউটোরিয়ালটি অনুসরণের আগে নিশ্চিত হয়ে নিন, আপনার সাইটে লগো-সুবিধাটি থাকাসত্ত্বেয় আপনি এটি ব্যবহার করতে চান। ধন্যবাদ।</p>



<p class="has-text-align-center has-background" style="background-color:#c2ecdb">Grab the <strong><a href="http://wordpress.stackexchange.com/q/138098/22728" data-type="URL" data-id="http://wordpress.stackexchange.com/q/138098/22728" target="_blank" rel="noreferrer noopener">Original English version</a></strong> here on WordPress StackExchange</p>



<p><strong>জ্ঞানস্তর:</strong>&nbsp;প্রাথমিক/মাধ্যমিক স্তর</p>



<p><strong>সময়:</strong>&nbsp;৫ মিনিট</p>



<p>ফেভিকন (favicon) হলো ওয়েবসাইটের একটা সংক্ষিপ্ততম পরিচিতি বা ব্র্যান্ডিং, যা, আপনি ওয়েবসাইট খুললে ব্রাউযারের ট্যাবে কিংবা টাইটেল বারে, ওয়েবসাইটের নামের পাশে দেখা যায়। সাধারণত ওয়েবসাইটের লগো&#8217;র ছোট্ট রূপটাই ফেভিকন হিসেবে ব্যবহার করতে দেখা যায়, তবে এক্ষেত্রে ফেভিকনটা সম্পূর্ণই আপনার ব্যক্তিগত পছন্দ &#8211; যা ইচ্ছা তা হতে পারে। কোনো ওয়েবসাইটে ফেভিকন যুক্ত করার জন্য HTML <code>&lt;head&gt;</code> ট্যাগের ভিতর নিচের লাইনটি লিখতে হয়, আর যথাস্থানে <code>.ico</code> (Icon) এক্সটেনশানের একটা ইমেজ ফাইল রাখতে হয়:</p>



<pre class="wp-block-preformatted">&lt;link rel="shortcut icon" href="images/favicon.ico" /&gt;</pre>



<p>ওয়ার্ডপ্রেস ওয়েবসাইটেও একইভাবে ফেভিকন যুক্ত করা যায়, তবে ওয়ার্ডপ্রেসে ফাইলের পাথ (মানে কোথায় ফাইলটি আছে) বোঝানো একটু অন্যরকম, তাছাড়া সর্বত্র ফেভিকনকে দেখানোর বিষয়টিও আমরা এখানে আলোচনা করতে যাচ্ছি।</p>



<p>প্রথমত জেনে নেয়া দরকার, আপনি এই কাজটি থিম কিংবা প্লাগইন উভয় পদ্ধতিতেই করতে পারেন &#8211; আমরা উভয় পদ্ধতিই আলোচনা করছি:</p>



<h3>প্রস্তুতি</h3>



<p>যে ছবিটিকে ফেভিকন হিসেবে দেখাতে চান, তা নির্বাচন করুন, এবং যেকোনো ছবি এডিট করার টুল (যেমন: পেইন্ট, ফটোশপ, গিম্প ইত্যাদি) দিয়ে ছবিটিকে 16px × 16px কিংবা 32px × 32px-এ সংরক্ষণ করুন। ছবির ফাইলটি <code>.jpg</code> (JPEG), <code>.png</code> (PNG), <code>.gif</code> (GIF) ইত্যাদি যেকোনো ফর্মেটেরই হতে পারে। তবে ব্যাকগ্রাউন্ডহীন ছবি হলে <code>.png</code>-তে সংরক্ষণ করতে হবে।</p>



<p>ফাইলটিকে রিনেম করুন, এবং এক্সটেনশানটা বদলে <code>.ico</code> করে ফেলুন। ধরা যাক আপনার ছবিটি ছিল favicon.png, এবারে তা হয়ে গেল favicon.ico।</p>



<p>ব্যস, প্রস্তুতি শেষ। এবারে কাজে নামার পালা।</p>



<h3>থিম-এর মাধ্যমে ফেভিকন যোগ</h3>



<span id="more-445"></span>



<h4>স্ট্যাটিক বা স্থির কোড</h4>



<p>থিম তৈরি করার সময় থিমের images ফোল্ডারের ভিতর ফেভিকন আইকন ফাইলটি রেখে, থিমের&nbsp;হেডারে <code>&lt;head&gt;</code>&nbsp;ট্যাগের ভিতর উপরের কোডটি বসিয়ে দিলেই কাজটা হয়ে যাবে। তবে কোডটিতে একটু পরিবর্তন করে নিতে হবে:</p>



<pre class="wp-block-preformatted">&lt;link rel="shortcut icon" href="&lt;?php echo get_template_directory_uri(); ?&gt;/images/favicon.ico" /&gt;</pre>



<p>লক্ষ করুন এখানে&nbsp;<code>get_template_directory_uri()</code>ব্যবহার করা হয়েছে। ওয়ার্ডপ্রেসে থিমের ফোল্ডারটির পাথ সনাক্ত করাবার জন্য এটি ব্যবহার করা হয়ে থাকে। আপনি যদি চাইল্ড থিম নিয়ে কাজ করেন, তাহলে এক্ষেত্রে <code>get_stylesheet_directory_uri()</code>-এর ব্যবহার করুন।</p>



<p>আপনার ফেভিকনটি সাইটের ফ্রন্টএন্ডে দেখা যাবে, কিন্তু অ্যাডমিন প্যানেলে দেখা যাবে না। তাই আমরা একটি ডায়নামিক কোড লিখতে যাচ্ছি, যা দিয়ে আমরা, উপরের কোডটি ব্যবহার না করেই, সাইটের ফ্রন্টএন্ড এবং ব্যাকএন্ডে ফেভিকন লোড করতে পারবো।</p>



<h4>ডায়নামিক কোড</h4>



<p>ওয়ার্ডপ্রেস থিমের হেডারের <code>&lt;head&gt;</code> সেকশনে <code>wp_head()</code>-এর ব্যবহার উত্তম, এবং একটি আধুনিক পদ্ধতি &#8211; অনেক প্লাগইনই এর হুকটা ব্যবহার করে প্রয়োজনীয় কোড লোড করে। আপনার থিমে এই হুকটা যদি হেড সেকশনে বসানো থাকে, তাহলে থিমের <code>functions.php</code> ফাইলে নিচের কোডটি বসাতে হবে:</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/312bfefcdb008599377c27ccb5513adb">Gist</a>.
</div></figure>



<p>এখানে আমরা একটা ফাংশনের ভিতরে আমাদের আগের স্ট্যাটিক কোডটাই লিখেছি। তারপর <code>add_action()</code> দিয়ে দুটো আলাদা জায়গায় হুক করেছি, পাশের কমেন্ট দেখে আপনারা বুঝতে পারছেন, কোন হুকটা দিয়ে আমাদের ফেভিকনটা কোথায় চলে যাচ্ছে &#8211; তবু বলে দিচ্ছি, প্রথম অ্যাকশন দিয়ে <code>wp_head()</code> হুকের মাধ্যমে সাইটের ফ্রন্টএন্ডে ফেভিকনটা দেখা যাবে, আর দ্বিতীয়টার ব্যবহারে সাইটের ব্যাকএন্ডেও ফেভিকনটা দেখা যাবে।</p>



<h4>রেফারেন্স লিংক:</h4>



<ul>
<li><a title="get_template_directory_uri() - WordPress Codex" href="http://codex.wordpress.org/Function_Reference/get_template_directory_uri" target="_blank" rel="noopener"><code>get_template_directory_uri()</code> &#8211; ওয়ার্ডপ্রেস কোডেক্স^</a></li>



<li><a title="get_stylesheet_directory_uri() - WordPress Codex" href="http://codex.wordpress.org/Function_Reference/get_stylesheet_directory_uri" target="_blank" rel="noopener"><code>get_stylesheet_directory_uri()</code> &#8211; ওয়ার্ডপ্রেস কোডেক্স^</a></li>
</ul>



<h3>প্লাগইন-এর মাধ্যমে ফেভিকন যোগ</h3>



<p>কখনও কখনও এমনও তো হতে পারে, আপনার সাইটের থিম পরিবর্তন করা লাগতে পারে। এক্ষেত্রে ধরা যাক আপনার ফেভিকনটা পরিবর্তন হচ্ছে না, তখন কিন্তু আগের থিমের সাথে আপনার ফেভিকনের কোডটাও চলে যাচ্ছে, অর্থাৎ সাইটে ফেভিকন নিষ্ক্রীয় হয়ে যাচ্ছে। এই সমস্যা দূর করতে আমরা আমাদের সাইটে ফেভিকন, একটা প্লাগইন ব্যবহার করেও দেখাতে পারি।</p>



<p>এজন্য শুরুতেই একটা <a title="Creating a site-specific snippets plugin - OttoPress.com" rel="noopener" href="http://ottopress.com/2011/creating-a-site-specific-snippets-plugin/" target="_blank">নিজস্ব প্লাগইন^</a> বানিয়ে নিতে পারি। কোড এডিটর খুলে নিচের কোডগুলো লিখুন:</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/312bfefcdb008599377c27ccb5513adb">Gist</a>.
</div><figcaption class="wp-element-caption">Favicon যোগ করার জন্য ছোট্ট একটা প্লাগইন বানানো যেতে পারে</figcaption></figure>



<p>লক্ষ করুন, এখানে আমরা আগের ফাংশনটার বদলে <code>plugins_url()</code> ফাংশনটা ব্যবহার করেছি, কারণ আমরা প্লাগইনের ভিতরে আমাদের আইকন ফাইলটি রাখতে যাচ্ছি। এবারে ফাইলটি ধরা যাক <code>my-favicon.php</code> লিখে সংরক্ষণ করলাম। ফাইলটা একটা <code>my-favicon</code> নামক একটা ফোল্ডারে রেখে আমাদের <code>favicon.ico</code> ফাইলটি ঐ ফোল্ডারে রাখি। এবারে এই পুরো ফোল্ডারটি <code>wp-content/plugins</code> ফোল্ডারের ভিতর পেস্ট করি। তাহলে ব্যাপারটা যা দাঁড়ালো:</p>



<pre class="wp-block-preformatted">wp-content/
 &nbsp; &nbsp;plugins/
 &nbsp; &nbsp; &nbsp; my-favicon/
 &nbsp; &nbsp; &nbsp; &nbsp; -my-favicon.php
 &nbsp; &nbsp; &nbsp; &nbsp; -favicon.ico</pre>



<p>এখন আপনার ওয়ার্ডপ্রেস অ্যাডমিন প্যানেলের প্লাগইন্‌স পাতায় (সাধারণত <code>/wp-admin/plugins.php</code>) গিয়ে <code>My Favicon</code> নামক প্লাগইনটি অ্যাক্টিভেট বা সক্রীয় করুন।</p>



<p>ব্যস, এবার আপনার সাইটের ফ্রন্টএন্ড এবং ব্যাকএন্ডে উপভোগ করুন ফেভিকন!</p>



<h4>রেফারেন্স লিংক:</h4>



<ul>
<li><a title="plugins_url‎() - WordPress Codex" href="https://codex.wordpress.org/Function_Reference/plugins_url‎" target="_blank" rel="noopener"><code>plugins_url()</code>&nbsp;&#8211; ওয়ার্ডপ্রেস কোডেক্স^</a></li>
</ul>



<h3>বোনাস &#8211; অ্যাপল টাচ আইকন যোগ!</h3>



<p>অ্যাপলের মোবাইল (আইফোন) কিংবা আইপ্যাডে অ্যাপল টাচ আইকন দেখা যায়, যা আপনার সাইটের প্রতিনিধিত্ব করবে অনেকটা ফেভিকনের মতো। &nbsp;যদিও ফেভিকন এবং অ্যাপল টাচ আইকন ভিন্ন বিষয়, তবু এদের পদ্ধতিটা যেহেতু এক, তাই বিষয়টা এখানেই আলোচনা করা হলো:</p>



<p>ফেভিকন যেখানে ১৬-১৬ কিংবা ৩২-৩২ ডাইমেনশনে তৈরি করা হয়েছিল, অ্যাপল টাচ আইকনটা সেখানে তৈরি করতে হবে 129px × 129px ডাইমেনশনে, তবে ফাইলটা <code>.png</code> হলেও সমস্যা নেই। এবারে আগের কোডের মতোই হবে এবারের কোডটিও, লিখতে হবে:</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/312bfefcdb008599377c27ccb5513adb">Gist</a>.
</div></figure>



<p>বাকিটা এবারে আপনিও পারবেন ইনশাল্লাহ। 🙂</p>



<p>এই অংশটির জন্য&nbsp;<a title="helgatheviking" href="http://wordpress.stackexchange.com/users/6477/helgatheviking" target="_blank" rel="noopener"><em>helgatheviking</em>^</a>-কে ধন্যবাদ (<a title="What's the proper way to add a favicon in WordPress without a plugin? - WordPress Development" href="http://wordpress.stackexchange.com/a/43932/22728" target="_blank" rel="noopener">মূল উৎস^</a>)।</p>



<p><strong>-মঈনুল ইসলাম</strong><br><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a rel="noreferrer noopener" href="https://mayeenulislam.github.io/" target="_blank">mayeenulislam.github.io</a></p>



<p>______________________________</p>



<p><sup>পুরো টিউটোরিয়ালটা আগে, ইংরেজিতে প্রকাশ করেছিলাম StackExchange-এর WordPress Development প্রশ্নোত্তর সাইটে ১৬ মার্চ ২০১৪ তারিখে। (<a title="How to add favicon to my site - in both front end and admin panel - WordPress Stack Exchange" href="http://wordpress.stackexchange.com/q/138098/22728" target="_blank" rel="noopener">মূল লিংক^</a>)</sup></p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/wordpress-favicon/">ওয়ার্ডপ্রেস ফ্রন্টএন্ড ও ব্যাকএন্ডে ফেভিকন যোগ</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mayeenulislam.github.io/tuts/wordpress-favicon/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>কিভাবে বাংলায় ভিডিও’র সাবটাইটেল লিখবেন?</title>
		<link>https://mayeenulislam.github.io/tuts/writing-bangla-subtitle/</link>
					<comments>https://mayeenulislam.github.io/tuts/writing-bangla-subtitle/#comments</comments>
		
		<dc:creator><![CDATA[মঈনুল ইসলাম]]></dc:creator>
		<pubDate>Sat, 08 Dec 2012 07:24:38 +0000</pubDate>
				<category><![CDATA[অন্যান্য টিউটোরিয়াল]]></category>
		<category><![CDATA[জ্ঞান-স্তরভিত্তিক টিউটোরিয়াল]]></category>
		<category><![CDATA[প্রাথমিক স্তরের টিউটোরিয়াল]]></category>
		<guid isPermaLink="false">http://nanodesigns.wordpress.com/?p=241</guid>

					<description><![CDATA[<p> [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/writing-bangla-subtitle/">কিভাবে বাংলায় ভিডিও’র সাবটাইটেল লিখবেন?</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><span lang="BN-BD" style="font-size: 10pt; line-height: 115%; font-family: 'Siyam Rupali';"><strong>জ্ঞানস্তর:</strong> প্রাথমিক</span></p>



<p>ইংরেজি মুভি দেখতে বসেছি, কিন্তু তবু ইংরেজিটা বুঝতে পারছি না, কারণ হলিউডের মুভি দেখতে দেখতে অ্যামেরিকান ইংরেজিতে অভ্যস্ত হয়ে পড়ায়, চিফ ব্রিটিশ ইংরেজি সহজে বুঝতে পারছি না, মুভিটার নাম: Sherlock Homes। তাই খুব সহজে গুগল করলাম প্রয়োজনীয় সহায়তার জন্য, এবং কিছুক্ষণের মধ্যে ছোট্ট একটা ফাইল নামিয়ে ভিডিও প্লেয়ারেই চলচ্চিত্রের কথাগুলো নিচে লেখা অবস্থায় দেখতে পেলাম &#8211; একে চলচ্চিত্রবিদ্যায় কী বলা হয় জানি না, তবে আমরা সাধারণ মানুষ একে ‘সাবটাইটেল’ হিসেবে জানি।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/12/01-movie-subtitle-in-bangla-nanodesigns.jpg"><img decoding="async" width="704" height="384" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/12/01-movie-subtitle-in-bangla-nanodesigns.jpg" alt="চলচ্চিত্রে দেখা যাবে বাংলা সাবটাইটেল, তৈরি করবো নিজেই :)" class="wp-image-246" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/12/01-movie-subtitle-in-bangla-nanodesigns.jpg 704w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/12/01-movie-subtitle-in-bangla-nanodesigns-300x164.jpg 300w" sizes="(max-width: 704px) 100vw, 704px" /></a><figcaption class="wp-element-caption">চলচ্চিত্রে দেখা যাবে বাংলা সাবটাইটেল, তৈরি করবো নিজেই 🙂</figcaption></figure></div>


<h3>সাবটাইটেল ফাইল পরিচিতি</h3>



<p>সাবটাইটেল ফাইলগুলোর এক্সটেনশন হলো SRT (*.srt)। ফাইলের নাম যা ইচ্ছা হতে পারে, ভিডিও প্লেয়ারে ভিডিওটি চালু করে এসআরটি ফাইলটি লোড করে দিলেই হয়, সময় বুঝে বুঝে সে ভিডিও চলার সাথে সাথে নিচে সাবটাইটেল দেখাতে থাকবে। এই ফাইলগুলোতে শুধু লেখা বা অক্ষর থাকে বলে এগুলোর আকার হয় যথেষ্ট কম, মাত্র কয়েক কিলোবাইট (KB)।</p>



<h3>সাবটাইটেল ফাইলের কার্যপদ্ধতি</h3>



<span id="more-241"></span>



<p>দেখা যাক একটা সাবটাইটেল ফাইল কিভাবে কাজ করে, উদাহরণস্বরূপ ‘শার্লক হোম্‌স’ চলচ্চিত্রের এসআরটি ফাইলটাই ধরা যাক:</p>



<pre class="wp-block-preformatted">1
00:00:27,198 --&gt; 00:00:29,189
[HOOVED PATTERING]

2
00:00:29,367 --&gt; 00:00:31,597
[HORDED WHINNYING]

3
00:01:43,307 --&gt; 00:01:44,774
HOLMES:
 &lt;i&gt;Head cocked to the left...&lt;/i&gt;

4
00:01:44,942 --&gt; 00:01:46,739
&lt;i&gt;...partial deafness in ear.&lt;/i&gt;</pre>



<p>এখানে 1, 2, 3, … এগুলো হলো সাবটাইটেলের সংখ্যা। 00:00:27, 198 &#8211;&gt; 00:00:29, 189 হলো ঘন্টা:মিনিট:সেকেণ্ড, মিলিসেকেণ্ড থেকে ঘন্টা:মিনিট:সেকেণ্ড, মিলিসেকেণ্ড পর্যন্ত সময়কাল; এর দ্বারা বোঝায়, লেখাটি এই সময়ের ভিতরে পর্দায় দেখা যাবে, সময় শেষ হয়ে গেলেই তা অদৃশ্য হয়ে যাবে। আর এর পরে দিতে হয় প্রদর্শনযোগ্য লেখাটি, যেমন এখানে [HOOVED PATTERING] লেখাটি।</p>



<p>সাবটাইটেল-এ বিভিন্ন ফরম্যাটিং যুক্ত করার জন্য HTML-এর কয়েকটি বহুল পরিচিত ট্যাগ ব্যবহার করা যায় এসআরটি ফাইলে, যেমন: Bold ট্যাগ (<strong>Text</strong>), Italic ট্যাগ (<em>Text</em>), এবং Underline (Text)। লক্ষ করুন: এখানে 3 নম্বর সাবটাইটেলটি ইটালিক ট্যাগ দিয়ে লেখা, মানে মনিটরে এই লেখাটি বাঁকা করে দেখাবে।</p>



<p>এছাড়াও সাবটাইটেল লেখায়, সাহিত্যিক লেখনীর বিভিন্ন প্রতীকি বিষয় দেখানো যায়, যেমন: একটা শব্দ (sound) হচ্ছে, শব্দটা কোনো ব্যক্তির বক্তব্য নয়, তাই শব্দকে বোঝাতে তৃতীয় বন্ধনীর ভিতরে ইংরেজি বড় ছাদের হরফ দিয়ে লেখা হয় শব্দটার ধরণ, তখন দর্শক বুঝতে পারেন, এটা কিসের শব্দ। উদাহরণস্বরূপ: এখানে 1, 2-তে ‘ঘোড়া ডাকছে’ এবং ‘চাপা আওয়াজ’ বোঝাতে যথাক্রমে [HOOVED PATTERING] এবং [HORDED WHINNYING] লেখা হয়েছে তৃতীয় বন্ধনী দিয়ে। এছাড়া, কোনো কথায় জোর দেয়া (emphasis) বোঝাতে বাঁকা করে লেখা, যেমন: I insist, I did not do this. (আমি জোরেশোরে বলছি, আমি এটা করি নাই)। এছাড়া ‘কথাগুলো মনে মনে বলছে’ বোঝাতে বাঁকা করে লেখা। আবার কোনো কথা চিৎকার করে জোর গলায় বলা হচ্ছে বোঝাতে সবগুলো হরফ ইংরেজি বড় ছাদের অক্ষর দিয়ে লেখা হয়, যেমন: I say DO IT NOW. (আমি বলছি, [চিৎকার করে] এক্ষুণি করো)। এছাড়া এন্টার (Enter, Return) চেপে নিচের লাইনে চলে আসার মাধ্যমে লেখাকেও একাধিক লাইনে লেখা যায়।</p>



<h3>সাবটাইটেল ফাইল তৈরি করার পদ্ধতি</h3>



<p>ইংরেজি সাবটাইটেল নিয়ে এতক্ষণ আলোচনা করার অর্থ হলো, সাবটাইটেলের ভিতরকার কলকব্জাগুলো বুঝিয়ে দেয়া। এবারে আমরা জানবো, কিভাবে সাবটাইটেল তৈরি করা যায়। খুব সহজেই, আপনার কম্পিউটারের Notepad দিয়েই আপনি সাবটাইটেল তৈরি করতে পারেন।</p>



<ol>
<li><strong>প্রথম ধাপ:</strong> প্রথমে একটা নোটপ্যাড খুলুন (উইন্ডোজ কম্পিউটারে Start &gt; All Programs &gt; Accessories &gt; Notepad। কিংবা Start &gt; Run খুলে লিখুন notepad এবং OK করুন)</li>



<li><strong>দ্বিতীয় ধাপ:</strong> এবারে উপরে দেয়া ফরম্যাট অনুসরণ করে আপনার কাঙ্ক্ষিত ভিডিওটির লেখাগুলো, ভিডিও প্লেয়ারে সময়ের সাথে মিলিয়ে মিলিয়ে দেখে লিখে ফেলুন</li>



<li><strong>তৃতীয় ধাপ:</strong> লেখা শেষ হয়ে গেলে ফাইলটি সংরক্ষণ করতে File &gt; Save (Ctrl + S) চাপুন। যেখানে সংরক্ষণ করতে চান, সেখানে গিয়ে File Name-এর স্থলে ফাইলের নাম লিখুন এবং .txt-এর বদলে লিখুন .srt। কারণ আমরা সাবটাইটেল হিসেবে ফাইলটি সংরক্ষণ করতে চাচ্ছি, আর সাবটাইটেল ফাইলের এক্সটেনশন হলো এসআরটি</li>
</ol>



<p>ব্যস, তৈরি হয়ে গেল আপনার ভিডিওটির সাবটাইটেল ফাইল, ইংরেজিতে। এবারে ভিডিওটি চালু করে প্লেয়ার থেকে সাবটাইটেল ফাইলটি লোড করলে আপনার বেঁধে দেয়া সময়ানুগ আপনার লেখা সাবটাইটেলগুলো ফরম্যাটিং অনুসারে দেখা যাবে।</p>



<p>কিন্তু আমাদের মনটা এখনও ভরেনি, আমরা চাই, আমাদের ইউনিকোড সর্মথন করে এরকম কম্পিউটারে বাংলা ভাষায় সাবটাইটেল দেখতে। অনলাইনে এখন অনেক চলচ্চিত্রেরই বাংলা সাবটাইটেল পাওয়া যায়, সেখান থেকে ফাইল নামিয়ে ব্যবহার করা যায় বিনামূল্যেই। তবে পরিমাণটা অনেক কম, তাছাড়া প্রয়োজনীয় অনেক ভিডিও কিংবা চলচ্চিত্রেরই সাবটাইটেল এখনও কেউ দেননি। তাই দরকার হতে পারে নিজের পছন্দের সাবটাইটেলগুলো বাংলায় নিজেরই তৈরি করে নেবার। এবারে সে পদ্ধতিটা দেখা যাক:</p>



<h3>বাংলায় সাবটাইটেল লেখার পদ্ধতি</h3>



<p>‘How to write Bangla subtitle?’ লিখে গুগল করেও কাঙ্ক্ষিত জবাব সহজে পাইনি। তাই বাংলায় সাবটাইটেল লেখার বিষয়টা নিয়েই মূলত এই আয়োজন। যাহোক, সাবটাইটেল লেখার পদ্ধতি সম্পর্কে আমরা এখন জানি, এবং করতেও পারি। তাই সাবটাইটেল লেখার জন্য ‘প্রথম ধাপ’ অনুসরণ করতে কোনো বাধা নেই।</p>



<p><strong>দ্বিতীয় ধাপ:</strong> এবারে দ্বিতীয় ধাপে সাবটাইটেলের সংখ্যা, সময়ের হিসাব এগুলো যথারীতি ইংরেজিতেই করতে হবে। শুধুমাত্র সাবটাইটেলগুলো বাংলায় লিখতে হবে। বাংলায় লেখার ক্ষেত্রে আসকিভিত্তিক লেখাও লিখতে পারেন, ইউনিকোডভিত্তিক লেখাও লিখতে পারেন। কিন্তু আমরা বোধহয় বাংলার ক্ষেত্রে আসকিভিত্তিক লেখাকে এখন বিদায় জানিয়েছি, এবং ইউনিকোডভিত্তিক আধুনিক এবং ভবিষ্যতের পদ্ধতিতে লেখাকে গ্রহণ করেছি সানন্দে। তাই ইউনিকোডভিত্তিক যেকোনো বাংলা-লেখার-সফ্‌টওয়্যার (যেমন: অভ্র কীবোর্ড, লেখনী ইত্যাদি) দিয়ে বাংলা লিখতে পারেন আপনি।</p>



<p>ধরা যাক, শার্লক হোম্‌সের ঐ সাবটাইটেলগুলো আমরা বাংলায় লিখলাম, তাহলে তা দেখা যাবে এভাবে:</p>



<pre class="wp-block-preformatted">1
00:00:27,198 --&gt; 00:00:29,189
[ঘোড়া ডাকছে]

2
00:00:29,367 --&gt; 00:00:31,597
[চাপা আওয়াজ]

3
00:01:43,307 --&gt; 00:01:44,774
হোম্‌স: &lt;i&gt;মাথাতে বাম দিকে থেকে আঘাত...&lt;/i&gt;

4
00:01:44,942 --&gt; 00:01:46,739
&lt;i&gt;...মানে, কানে সাময়িক বধিরতা।&lt;/i&gt;</pre>



<p>এভাবে বাংলায় লিখে ফেলার পরে আমাদের দ্বিতীয় ধাপ শেষ।</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/12/02-subtitles-in-notepad-nanodesigns.jpg"><img decoding="async" width="931" height="537" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/12/02-subtitles-in-notepad-nanodesigns.jpg" alt="বাংলায় সাবটাইটেল লিখে নোটপ্যাড দিয়ে সংরক্ষণ করার পদ্ধতি" class="wp-image-247" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/12/02-subtitles-in-notepad-nanodesigns.jpg 931w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/12/02-subtitles-in-notepad-nanodesigns-300x173.jpg 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/12/02-subtitles-in-notepad-nanodesigns-768x443.jpg 768w" sizes="(max-width: 931px) 100vw, 931px" /></a><figcaption class="wp-element-caption">বাংলায় সাবটাইটেল লিখে নোটপ্যাড দিয়ে সংরক্ষণ করার পদ্ধতি</figcaption></figure></div>


<p><strong>তৃতীয় ধাপ:</strong> এবারে তৃতীয় ধাপে গিয়ে নোটপ্যাডের File &gt; Save (Ctrl + S) চাপার পর যে উইন্ডো আসবে, সেখানে আগের মতোই ফাইলনেম দিতে হবে এবং এক্সটেনশন হিসেবে .srt লিখতে হবে। শুধু, সংরক্ষণ করার আগে, নিচের তিন নম্বর ড্রপডাউনে ক্লিক করে ANSI’র বদলে Unicode পছন্দ করে দিতে হবে; ব্যস, কাজ শেষ। ইউনিকোড এজন্য পছন্দ করে দিতে হবে, কারণ বাংলা হরফগুলো আমরা ইউনিকোডে লিখেছি, এবং নোটপ্যাড ডিফল্টভাবে ASCII Plain Text লেখার জন্য তৈরি করা হয়েছে। আপনি ইউনিকোড পছন্দ না করে দিলে এতক্ষণ কষ্ট করে লেখা বাংলা লেখাগুলো নোটপ্যাড আসকিতে বদলে নিবে, এবং বাংলা লেখাগুলোর বদলে সেখানে কিছু প্রশ্নবোধক চিহ্ন (?????) বা আয়তাকৃতির বাক্স দেখা যেতে পারে। তখন সব পরিশ্রম বৃথা হয়ে যাবে।</p>



<p>এবারে মুভিটি চালু করে এসআরটি ফাইলটি লোড করে দিলেই বাংলায় সাবটাইটেল দেখা যাবে। এবং যদি মনে হয়, কোথাও, মুভির কথোপকথনের সাথে লেখা প্রদর্শনের গড়মিল হচ্ছে, তাহলে আবার ফাইলটা নোটপ্যাড দিয়ে খুলে প্রয়োজনীয় সম্পাদনা করে নেয়া যাবে।</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/12/03-subtitles-in-ms-word-in-bangla-nanodesigns.jpg"><img decoding="async" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/12/03-subtitles-in-ms-word-in-bangla-nanodesigns-1024x351.jpg" alt="মাইক্রোসফ্‌ট ওয়ার্ড দিয়ে বাংলা সাবটাইটেল লিখে সংরক্ষণ করার পদ্ধতি" class="wp-image-248"/></a><figcaption class="wp-element-caption">মাইক্রোসফ্‌ট ওয়ার্ড দিয়ে বাংলা সাবটাইটেল লিখে সংরক্ষণ করার পদ্ধতি</figcaption></figure></div>


<p>নোটপ্যাড ছাড়াও ওয়ার্ডপ্যাড-এ লেখার কাজটি করা যায়। তবে ওয়ার্ডপ্যাডে বাংলা রেন্ডারিং-এ সমস্যা দেখা যেতে পারে। আপনি চাইলে মাইক্রোসফ্‌ট অফিস দিয়েও এধরণের লেখালেখি করতে পারেন, এতে বাংলা লেখাগুলো বড়-ছোট করে ভালো করে দেখে লিখতে পারবেন। তবে সেজন্য ফাইলটি সংরক্ষণ করার সময়ই যথারীতি <code>.srt</code> এক্সটেনশন দিয়ে, Save as type-এ Plain Text (<code>*.txt</code>) পছন্দ করে Save-এ ক্লিক করতে হবে। এবারে পরবর্তি উইন্ডোতে File Conversion-এ Other Encoding- রেডিও বাটনে এ ক্লিক করে তালিকা থেকে Unicode পছন্দ করে দিতে হবে। তারপর OK করে সংরক্ষণ সম্পন্ন করতে হবে।</p>



<p>এছাড়া বিভিন্ন কোড এডিটর যেমন: NotePad++, SublimeText, Visual Studio Code, &#8230; ইত্যাদি দিয়েও কাজটি করা যাবে, তবে সংরক্ষণ করার সময় ইউনিকোডের ব্যাপারটি মাথায় রাখলেই হবে।</p>



<h3>সাবটাইটেল লেখা/সম্পাদনার বিশেষ সফ্‌টওয়্যার</h3>



<p>এভাবে হাতের কাছে যা আছে, তা দিয়ে কাজ না করে আরো সহজসাধ্য সফ্‌টওয়্যার দিয়ে যারা কাজ করতে চান, তারা সাবটাইটেল লেখার বিভিন্ন সফ্‌টওয়্যার ব্যবহার করে থাকেন। এধরণের সফ্‌টওয়্যারগুলোর মধ্যে Subtitle Workshop, Subtitle Edit, AHD Subtitles Maker ইত্যাদি জনপ্রিয়। এছাড়াও আরো বহু সফ্‌টওয়্যার কিনে অথবা বিনামূল্যে ব্যবহার করা যায়।</p>



<h4>সীমাবদ্ধতা</h4>



<p>সীমাবদ্ধতা তেমন একটা নেই। তবে ইউনিকোড সমর্থন করে না এরকম পুরোন অপারেটিং সিস্টেমে, বাংলা ফন্ট ঠিকমতো রেন্ডার করতে পারে না বলে, বাংলায় লেখা সাবটাইটেল ঠিকমতো দেখা যাবে না। তাছাড়া যে ভিডিও প্লেয়ারে ভিডিওটা দেখা হবে, সেটাতে সাবটাইটেল প্রদর্শনে ভাষা সংক্রান্ত, কিংবা ইউনিকোড রেন্ডারিং সংক্রান্ত কোনো সীমাবদ্ধতা থাকলে তার কারণেও বাংলা ঠিকমতো না দেখা যেতে পারে। তবে আশার কথা হলো আধুনিক অপারেটিং সিস্টেমগুলো আগাগোড়া ইউনিকোড বাংলা সমর্থন করে এবং ভিডিও প্লেয়ারগুলোর আপডেট ভার্ষনে ইউনিকোড প্রদর্শনে বাধা নেই। KM Player, GOM Player, VLC Player ইত্যাদিতে খুব সহজেই সাবটাইটেল লোড করে দেখা যায়।</p>



<p>এভাবে বাংলায় সাবটাইটেল ফাইল তৈরি করে আমরা আমাদের নিজেদের ভাষায় যেকোনো চলচ্চিত্র, ডকুমেন্টারি, সংবাদ প্রতিবেদন, সাধারণ ঘরোয়া ভিডিও ইত্যাদিকে আরো বেশি প্রাঞ্জল এবং গ্রহণযোগ্য করে তুলতে পারি বাঙালিদের কাছে। ইংরেজি বা ভিন-ভাষার দুর্বোধ্য কিন্তু শিক্ষণীয় ভিডিওগুলোকে বাংলা সাবটাইটেল যোগ করে বাঙালি তথা বাংলাদেশকে আরো একধাপ এগিয়ে দিতে পারি এখন অনায়াসে… কী, পারবো না?</p>



<p><strong>&#8211; মঈনুল ইসলাম</strong><br><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://mayeenulislam.github.io/" target="_blank" rel="noreferrer noopener">mayeenulislam.github.io</a></p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/writing-bangla-subtitle/">কিভাবে বাংলায় ভিডিও’র সাবটাইটেল লিখবেন?</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mayeenulislam.github.io/tuts/writing-bangla-subtitle/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>বেসিX: ফটোশপের ওয়ার্কস্পেস</title>
		<link>https://mayeenulislam.github.io/tuts/basix-photoshop-workspace/</link>
					<comments>https://mayeenulislam.github.io/tuts/basix-photoshop-workspace/#comments</comments>
		
		<dc:creator><![CDATA[মঈনুল ইসলাম]]></dc:creator>
		<pubDate>Mon, 30 Apr 2012 18:38:09 +0000</pubDate>
				<category><![CDATA[জ্ঞান-স্তরভিত্তিক টিউটোরিয়াল]]></category>
		<category><![CDATA[ন্যানো বেসিX]]></category>
		<category><![CDATA[প্রাথমিক স্তরের টিউটোরিয়াল]]></category>
		<category><![CDATA[ফটোশপ টিউটোরিয়াল]]></category>
		<guid isPermaLink="false">http://nanodesigns.wordpress.com/?p=190</guid>

					<description><![CDATA[<p> [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/basix-photoshop-workspace/">বেসিX: ফটোশপের ওয়ার্কস্পেস</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>ফটোশপ basiX (প্রাথমিক জ্ঞান)</strong></p>



<p><strong>ভার্ষন:</strong> ফটোশপ ৭ (এবং সমমান)</p>



<p>এই টিউটোরিয়ালটা যখন লিখতে শুরু করি, তখন চিন্তা করছিলাম, এর কি আসলে কোনো দরকার আছে? কিন্তু লিখতে শুরু করে বুঝতে পারলাম, এর ঢের দরকার আছে। যাহোক, আজকের টিউটোরিয়াল হলো ফটোশপের ওয়ার্কস্পেস বা কর্মক্ষেত্র সম্পর্কে সম্যক ধারণা দেয়ার একটা চেষ্টা মাত্র। এই টিউটোরিয়াল থেকে আমরা জানবো ফটোপশ চালু হলে কোন অংশকে কী বলে, আর কোন অংশটা কী জন্যইবা।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/workspace.jpg"><img decoding="async" width="1753" height="858" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/workspace.jpg" alt="ফটোশপ ৭-এর ওয়ার্কপ্লেস পরিচিতি" class="wp-image-107" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/workspace.jpg 1753w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/workspace-300x147.jpg 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/workspace-1024x501.jpg 1024w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/workspace-768x376.jpg 768w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/workspace-1536x752.jpg 1536w" sizes="(max-width: 1753px) 100vw, 1753px" /></a><figcaption class="wp-element-caption">স্ক্রিনশট ০১.১: ফটোশপ ৭-এর ওয়ার্কপ্লেস পরিচিতি (ছবিটা ক্লিক করে মূল রেযোল্যুশনে খুলুন)</figcaption></figure></div>


<p>চিত্র ১ থেকে আমরা পুরো উইন্ডো’র একটা পরিচিতি পেয়ে যাবো। নিচে সেগুলোর সংক্ষিপ্ত পরিচিতি দেয়া হলো (এগুলোর বিস্তারিত আমরা ভবিষ্যতে জানবো, ইনশাল্লাহ):</p>



<p><strong>টাইটেল বার:</strong> নাম শুনেই বোঝা যাচ্ছে এখানে দেখা যাবে পরিচিতিমূলক নাম বা টাইটেল। সবচেয়ে উপরের অংশটিতেই তা থাকে। যেহেতু আমাদের সফ্‌টওয়্যারের নাম ফটোশপ, তাই এখানে টাইটেল বারে লেখা Adobe Photoshop।</p>



<span id="more-190"></span>



<p><strong>মেনু বার</strong><strong>:</strong> যেখানে File, Edit, Image ইত্যাদি মেনু থাকে, এবং তার অধীনে সাবমেনু থাকে।</p>



<p><strong>টুলবার/টুলপ্যালেট:</strong> ‘প্যালেট’ বানানটা এরকম: Palette। এটা দিয়ে বোঝানো হয় চিত্রকরদের আঙ্গুল ঢুকিয়ে হাতের তালুতে ধরা একটা বোর্ড, যাতে রং লেপ্টে চিত্রকর ছবি আঁকেন। অনেকেই একে ভুল করে ‘প্লেট’ বলে, যা শুদ্ধ নয়। যাহোক, কাজ করার উপযোগী প্রয়োজনীয় সব টুলগুলো যেখানে গোছানো থাকে, তাই টুল প্যালেট।</p>



<p><strong>রিবন</strong><strong>:</strong> টুলবারে যে টুলটা সিলেক্ট করা হবে বা বাছাই করা হবে, সেই টুল সংক্রান্ত প্রয়োজনীয় ফিচার বা সেটিংসগুলো দেখা যাবে এই রিবনে। প্রাথমিকভাবে মুভ টুল (V) সিলেক্ট থাকে বলে চিত্রের (চিত্র ১) মতো ফিচারগুলো দেখা যাচ্ছে। আপনি তার পার্শ্ববর্তি র&#x200d;্যাক্টাঙ্গুলার মার্কিউ টুল (M) সিলেক্ট করলেই দেখবেন রিবনের অপশনগুলো বদলে গেছে।</p>



<p><strong>ইমেজ</strong><strong>এরিয়া</strong><strong> (</strong><strong>কর্মক্ষেত্র</strong><strong>):</strong> এটা হলো মূল কর্মক্ষেত্র। ফটোশপ খোলার পরে এটা দেখা যায় না, নতুন একটা ফাইল চালু করলে, কিংবা বিদ্যমান কোনো ছবির (ইমেজ) ফাইল খুললে এটা দেখা যাবে। এখানেই মূলত যাবতীয় কাজ করা হয়, এবং দেখা যায়।</p>



<p>ইমেজ এরিয়ার উপরে রয়েছে আরেকটা টাইটেল বার। এই টাইটেল বারও ডিযাইনারদের জন্য গুরুত্বপূর্ণ। কেননা এখানে যেমন থাকে ফাইলটার নাম, কত শতাংশে দেখা যাচ্ছে, কোন লেয়ারটা সিলেক্ট করা আছে এবং সবচেয়ে গুরুত্বপূর্ণ– ছবিটা কোন মোডে, অর্থাৎ RGB নাকি CMYK নাকি Grayscale-এ আছে, তা দেখা যায়।</p>



<p><strong>স্ট্যাটাস</strong><strong>বার</strong><strong>:</strong> ‘স্ট্যাটাস বার’ নামটা শুনেই বোঝা যাচ্ছে এখানে স্ট্যাটাস বা অবস্থা সম্পর্কে দেখা যায়। [স্ক্রিনশট ০১.২-এ] লক্ষ করুন, স্ট্যাটাস বারে আমরা কিছু স্থান, সংখ্যা দিয়ে মার্ক করেছি, সেগুলো হলো:</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/status-bar.jpg"><img decoding="async" width="662" height="136" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/status-bar.jpg" alt="স্ট্যাটাস বার পরিচিতি" class="wp-image-108" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/status-bar.jpg 662w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/status-bar-300x62.jpg 300w" sizes="(max-width: 662px) 100vw, 662px" /></a><figcaption class="wp-element-caption">স্ক্রিনশট ০১.২: স্ট্যাটাস বার পরিচিতি</figcaption></figure></div>


<p><strong>১</strong><strong>.</strong> যে ইমেজ এরিয়াটা খোলা আছে, কিংবা একাধিক ইমেজের ক্ষেত্রে যে ইমেজটা বা ইমেজ এরিয়াটা সিলেক্ট করা আছে, সেটা এই মুহূর্তে তার মূল আকৃতির কত শতাংশে দেখা যাচ্ছে, তা দেখা যায়। আমার ইমেজটা মূল আকারের 66.67% বড় করে দেখা যাচ্ছিল। আপনি চাইলে ওখানে টাইপ করে 100%, 80%, 53% -এভাবে যে পরিমাণ বড় করে দেখতে চান, দিতে পারেন। (একই ফাংশন Info প্যালেটে দেখা যায়)</p>



<p><strong>২</strong><strong>.</strong> এটা মূলত কোনো অনলাইন এডিটিং-এর সময়, কিংবা কোনো নেটওয়ার্কে একাধিক ব্যক্তি একটি ফাইলে কাজ করছেন, ওসব ক্ষেত্রে নেটওয়ার্কে যোগাযোগ ম্যানেজ করা যায় ওখান থেকে। নেটওয়ার্কে বসে একাধিক ব্যক্তি একসাথে কাজ না করলে ওটার দরকার পড়বে না। (একই ফাংশন মেনুবারে File &gt; Workgroup-এ দেখা যাবে)</p>



<p><strong>৩</strong><strong>.</strong> এখানে দেখা যায়, যে ফাইলটা খোলা আছে, বা চালু করেছি, তার প্রকৃত আকৃতি কত, যেমন: 3M মানে হচ্ছে ছবিটার পিক্সেল ডাইমেনশন, মানে পিক্সেলের আকার কেমন, তা নির্দেশ করছে। দ্বিতীয়াংশের লেখাটি ফাইলের সম্ভাব্য আকৃতি সম্পর্কে ধারণা দেয় কিলোবাইটে (k) কিংবা মেগাবাইটে (m)।</p>



<p><strong>৪</strong><strong>.</strong> ৩ নম্বর অংশে কোন তথ্যটা দেখতে চান, তা এখান থেকে ঠিক করে দেয়া যায়। প্রাথমিকভাবে Document Sizes সিলেক্ট করে দেয়া আছে, তাই ৩ নম্বর-স্থলে ডকুমেন্ট সাইযেস দেখাচ্ছে। যদি Document Dimensions সিলেক্ট করা থাকতো, তাহলে ডকুমেন্টের পাশ-উচ্চতা’র (width-height) পরিমাপ দেখাতো।</p>



<p>আর এর ঠিক পরের অংশটিতে দেখায়, যে টুলটি সিলেক্ট করা আছে, তা পরিচালনা করার প্রয়োজনীয় নির্দেশনা।</p>



<p><strong>ন্যাভিগেটর</strong><strong>প্যালেট</strong><strong> (Navigator)</strong><strong>:</strong> এখানে দেখা যায় নিবন্ধটা কত শতাংশ বড় করে দেখা যাচ্ছে, তা প্রয়োজনে ছোট-বড় করা যায়।</p>



<p><strong>ইনফো</strong><strong>প্যালেট</strong><strong> (Info)</strong><strong>:</strong> মাউসের কার্সরটা এই মুহূর্তে যেখানে আছে, সেখানটার রংয়ের মান কী (R=?, G=?, B=? অথবা C=?, M=?, Y=?, K=?), রুলারের হিসাবে ওটার X-অক্ষ এবং Y-অক্ষের মান কত –সবকিছু দেখাবে।</p>



<p><strong>কালার</strong><strong>প্যালেট</strong><strong> (Color)</strong><strong>:</strong> ফোরগ্রাউন্ড কালার (উপরের রং) আর ব্যাকগ্রাউন্ড কালার (পিছনের রং) এখন কী আছে, এবং তা প্রয়োজনে পরিবর্তন করে নেয়া যায় যে কোনো রঙে, এখান থেকে।</p>



<p><strong>সোয়াচেয</strong><strong>প্যালেট</strong><strong> (Swatches)</strong><strong>:</strong> এখানে অনেকগুলো রং একসাথে দেখা যাবে, তবে প্রত্যেকটা আলাদা আলাদা করে দেখানো হয়েছে। প্রয়োজনীয় রঙে ক্লিক করে সেই রংটি দ্রুততার সাথে বাছাই করা যাবে।</p>



<p><strong>স্টাইল্</strong><strong>‌</strong><strong>স</strong><strong>প্যালেট</strong><strong> (Styles)</strong><strong>:</strong> বিভিন্ন ইফেক্ট, যা আপনি আগে কোথাও দিয়েছিলেন, তা যদি সেভ করে রাখেন, তবে তা এখানে দেখাবে। সহজ ভাষায়, স্টাইল্‌স প্যালেটে থাকবে সব রেকর্ড করা ইফেক্ট, যা বারবার কাজে লাগানো যায়।</p>



<p><strong>হিস্ট্রি</strong><strong>প্যালেট</strong><strong> (History)</strong><strong>:</strong> যা যা কাজ করলেন, তার সবই ধারাবাহিকভাবে দেখা যাবে এই প্যালেটে, প্রয়োজনীয় ধাপে এক ক্লিকেই ঘুরে আসা যায়।</p>



<p><strong>এ্যাকশন্</strong><strong>‌</strong><strong>স</strong><strong>প্যালেট</strong><strong> (Actions)</strong><strong>:</strong> একই ধরণের কাজ (এ্যাকশন) করার একঘেয়েমী দূর করতে একবার করে তা এখানে রেখে দেয়া যায়, পরে এক ক্লিকে কাজে লাগানো যায়।</p>



<p><strong>টুল</strong><strong>প্রিসেট্</strong><strong>‌</strong><strong>স</strong><strong> (Tool Presets)</strong><strong>:</strong> টুলবারে যে টুলটা সিলেক্ট করা হলো, তার কোনো বিশেষ ইফেক্ট যদি সেভ করা থাকে, তবে সেটা এখানে দেখা যায়। ফটোশপে প্রাথমিকভাবে কিছু প্রিসেট দিয়ে দেয়া থাকে।</p>



<p><strong>লেয়ার্</strong><strong>‌</strong><strong>স</strong><strong>প্যালেট</strong><strong> (Layers)</strong><strong>:</strong> আমার সবচেয়ে পছন্দের প্যালেট, এবং ফটোশপের সবচেয়ে বেশি ব্যবহৃত একটা প্যালেট। এখানে বিভিন্ন স্তর তৈরি করে একই ছবিতেই বিভিন্ন স্তরে আলাদা আলাদাভাবে কাজ করা যায়।</p>



<p><strong>চ্যানেল্</strong><strong>‌</strong><strong>স</strong><strong>প্যালেট</strong><strong> (Channels)</strong><strong>:</strong> ছবিটা যদি আরজিবি মোডে থাকে, তবে তিনটার সংমিশ্রণে একটা আর তিনটাতে আলাদা আলাদা করে আরো তিনটা –এভাবে একাধিক চ্যানেলে ছবিটাকে দেখা যায়।</p>



<p><strong>পাথ্</strong><strong>‌</strong><strong>স</strong><strong>প্যালেট</strong><strong> (Paths)</strong><strong>:</strong> সাধারণত কিছুই থাকে না। ছবির কোনো সিলেকশন যদি সংরক্ষণ (সেভ) করা হয়, তাহলে সেটা এখানে সংরক্ষিত থাকে।</p>



<p><strong>ক্যারেক্টার</strong><strong>প্যালেট</strong><strong> (Character)</strong><strong>:</strong> ফটোশপে লেখার জন্য যখন টেক্সট টুলের কাজ আসবে, তখন আপনার সবচেয়ে বেশি কাজে লাগবে এই ক্যারেক্টার প্যালেট। এখান থেকে ফন্ট সংক্রান্ত যাবতীয় পরিবর্তন এবং পরিশুদ্ধি আপনি নিশ্চিত করতে পারবেন।</p>



<p><strong>প্যারাগ্রাফ প্যালেট</strong><strong> (Paragraph)</strong><strong>:</strong> লেখাগুলোকে সুন্দর করে গুছিয়ে উপস্থাপন করার জন্য প্যারাগ্রাফের বিভিন্ন ধরণ পরিবর্তনে সহায়তা করবে এই প্যালেটটি।</p>



<p><strong>প্যালেট কূপ</strong><strong> (Palette Well)</strong><strong>:</strong> নাম দেখে ঘাবড়ে যাবার কিছু নেই, ফটোশপ ৭-এ প্যালেটগুলোর উপরের দিকে রিবনের ডান অংশে ব্রাশেয আর ফাইল ব্রাউযার নামে দুটো প্যালেট বসে থাকতে দেখা যায়, ঐ অংশটাকে বলে প্যালেট ওয়েল, যার বাংলা করলে দাঁড়ায় প্যালেটের কুয়া বা কূপ। প্রাথমিকভাবে প্যালেট কূপে এই ব্রাশেয আর ফাইল ব্রাউযার- দুটো প্যালেটই থাকে।</p>



<p><strong>ব্রাশেয প্যালেট</strong><strong> (Brushes)</strong><strong>:</strong> টুলবারে যে ব্রাশটা সিলেক্ট করা আছে, সেটাকে এখানে ইচ্ছামতো বদলে নেয়া যায়।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/file-manager.jpg"><img decoding="async" width="626" height="431" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/file-manager.jpg?w=300" alt="ফাইল ব্রাউযার প্যালেট পরিচিতি" class="wp-image-113" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/file-manager.jpg 626w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/file-manager-300x207.jpg 300w" sizes="(max-width: 626px) 100vw, 626px" /></a><figcaption class="wp-element-caption">স্ক্রিনশট ০২: ফাইল ব্রাউযার প্যালেট পরিচিতি</figcaption></figure></div>


<p><strong>ফাইল</strong><strong>ব্রাউযার প্যালেট (</strong><strong>File Browser</strong><strong>)</strong><strong>:</strong> সহজে নির্দিষ্ট ফাইলকে খুলতে ফাইল ব্রাউজার কাজের জিনিস। এখান থেকে যেকোনো স্থানে গিয়ে প্রয়োজনীয় ফাইলটা খোলা যায়। এমনকি লক্ষ করলে দেখবেন, ফাইল ব্রাউজারের একেবারে নিচে-ডানে সিলেক্ট করা ফাইলটাকে উৎসস্থলেই ৯০০[ডিগ্রী] রোটেট করা বা ঘোরানো যায়।</p>



<p>যদি কোনো প্যালেট দেখা না যায়, তাহলে খুব সহজেই মেনুবারের Window মেনুর অধীনে ক্লিক করে প্রয়োজনীয় প্যালেট চালু করে নেয়া যাবে, আবার প্রয়োজনে বন্ধও করে ফেলা যাবে।</p>



<h3>প্যালেট কূপে প্যালেট ফেলা</h3>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/dock-to-palette-well.jpg"><img decoding="async" width="339" height="314" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/dock-to-palette-well.jpg" alt="প্যালেট ওয়েলে প্যালেট ফেলা" class="wp-image-114" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/dock-to-palette-well.jpg 339w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/dock-to-palette-well-300x278.jpg 300w" sizes="(max-width: 339px) 100vw, 339px" /></a><figcaption class="wp-element-caption">পরিচিত্রণ ০১: প্যালেট ওয়েলে প্যালেট ফেলা</figcaption></figure></div>


<p>আপনার প্যালেটগুলো যদি ওয়ার্কস্পেসের ডানদিকে সংকুলান হয়না, তাহলে আপনি আপনার পছন্দের প্যালেটটিকে প্যালেট কূপে নোঙর (dock) করিয়ে রাখতে পারেন বা ফেলে দিতে পারেন। এজন্য পছন্দের প্যালেট শিরোনামে একটা ক্লিক করে প্যালেটটি নির্বাচন করে নিতে হবে। তারপর প্যালেটের ডানদিকে ডান-মুখী তীরটাতে ক্লিক করে তার মেনু বের করতে হবে। মেনুর প্রথম অপশনটাই হলো “Dock to Palette Well”। ওটাতে ক্লিক করলেই আপনার প্যালেটটি প্যালেট কূপে গিয়ে ঢুকে যাবে। কুয়ার মধ্যে পড়ে যাওয়ার যে এতো আনন্দ, ঐ প্যালেটকে না দেখলে বোঝা যাবে না তখন।</p>



<h3>ইচ্ছেমতো ওয়ার্কস্পেস সাজানো</h3>



<p>যেভাবে ফটোশপে প্যালেটগুলো সাজানো আছে, আপনাকে সেভাবে রেখেই কাজ করতে হবে –এমন অমোঘ বাণী কোথাও লেখা নেই। আপনি চাইলেই আপনার পছন্দমতো অবস্থানে প্রয়োজনীয় প্যালেটটি সরিয়ে রাখতে পারেন। পদ্ধতি খুবই সহজ: মাউস দিয়ে ধরুন প্রয়োজনীয় প্যালেটটা, তারপর ড্র্যাগ করে (ক্লিক করে ধরে রেখে মাউস সরানো) প্যালেটটা পছন্দের জায়গায় এনে ছেড়ে দিন। এভাবে যে যে প্যালেট যেখানে যেখানে রাখতে চান, রেখে দিলেই আপনার পছন্দমতো ওয়ার্কস্পেস বা কর্মক্ষেত্র প্রস্তুত হয়ে গেলো।</p>



<p>কিন্তু কথা হলো, আপনি যখন ফটোশপ বন্ধ করে দিবেন, তখন আবার তা আপনাআপনি আগের মতো হয়ে যাবে। তাহলে এতো কষ্ট করেইবা লাভ কী হলো, আর করলামই যখন, তখন কেন সেরকম থাকলো না?</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/save-workspace.jpg"><img decoding="async" width="921" height="243" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/save-workspace.jpg" alt="ওয়ার্কস্পেস সংরক্ষণ, পূণর্ব্যবহার, কিংবা প্রাথমিক অবস্থায় ফেরা" class="wp-image-115" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/save-workspace.jpg 921w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/save-workspace-300x79.jpg 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2012/01/save-workspace-768x203.jpg 768w" sizes="(max-width: 921px) 100vw, 921px" /></a><figcaption class="wp-element-caption">০২: ওয়ার্কস্পেস সংরক্ষণ, পূণর্ব্যবহার, কিংবা প্রাথমিক অবস্থায় ফেরা</figcaption></figure></div>


<p>এই সমস্যার সমাধান হলো, নিজের পছন্দের ওয়ার্কস্পেস সংরক্ষণ করে রাখা (সেভ করা)। নিজের পছন্দমতো প্যালেটগুলো সাজিয়ে নেয়া হয়ে গেলে, মেনু বারের Window &gt; Workspace &gt; Save Workspace&#8230; –এ ক্লিক করতে হবে (চিত্রে দ্রষ্টব্য 1)। একটা পপআপ আসবে (চিত্রে দ্রষ্টব্য 2), সেখানে আপনার পছন্দের ওয়ার্কস্পেসের জন্য একটা নাম লিখুন (আমরা যেমন লিখেছি nanodesigns workspace), তারপর সেভ বোতাম চাপুন। ব্যস, আপনার ওয়ার্কস্পেস সংরক্ষিত থাকলো। পরবর্তিতে ওয়ার্কস্পেস অন্যরকম হয়ে গেলেও Window &gt; Workspace–এর অধীনে থাকা আপনার সংরক্ষিত ওয়ার্কস্পেস লোড করতে (পূণরায় ব্যবহার করতে) পারেন (চিত্রে দ্রষ্টব্য 3)।</p>



<p>আর যদি কখনও মনে হয়, নাহ্, এগুলো আর ভালো লাগছে না, ফটোশপে যেভাবে দেয়া ছিল, সেভাবেই ফিরে যাই, তাহলে Window &gt; Workspace &gt; Reset Palette Locations –এ ক্লিক করে প্যালেটের অবস্থান রিসেট করে নিয়ে ডিফল্ট বা প্রাথমিক অবস্থায় ফিরে যাওয়া যাবে সহজেই।</p>



<p>এছাড়া প্যালেটগুলোকে ইচ্ছামতো সরিয়ে যেমন এখান থেকে ওখানে নেয়া যায়, তেমনি আবার প্যালেটের আকার বড়-ছোট করা যায়। বড়-ছোট করতে মাউসটাকে প্যালেটের কিনারায় ধরলেই দেখা যাবে, কার্সর পরিবর্তিত হয়ে উভয়দিকে তীরওয়ালা কার্সর দেখাচ্ছে, তখন ক্লিক করে প্যালেট ছোট-বড় করা যাবে। এছাড়া প্যালেটের অধীনে ডানদিকের তীরের ভিতরে ঐ প্যালেটের কিছু সুবিধা লুকিয়ে থাকে।</p>



<p><strong>-মঈনুল ইসলাম</strong><br><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://mayeenulislam.github.io/" target="_blank" rel="noreferrer noopener">mayeenulislam.github.io</a></p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/basix-photoshop-workspace/">বেসিX: ফটোশপের ওয়ার্কস্পেস</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mayeenulislam.github.io/tuts/basix-photoshop-workspace/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
