<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Hossein Jabani</title>
        <link>https://virgool.io/feed/@h.javooni</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-17 01:47:01</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>Hossein Jabani</title>
            <link>https://virgool.io/@h.javooni</link>
        </image>

                    <item>
                <title>ساخت فایل های جاوا با استفاده از آدرس WSDL و پکیج apache-cxf</title>
                <link>https://virgool.io/@h.javooni/%D8%B3%D8%A7%D8%AE%D8%AA-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%A2%D8%AF%D8%B1%D8%B3-wsdl-%D9%88-%D9%BE%DA%A9%DB%8C%D8%AC-apache-cxf-lpbkm6vdhepc</link>
                <description>در ابتدا این نکته را خدمتتان عرض کنم این کار را من در لینوکس ubuntu انجام دادم اما همه مراحل آن  در سیستم عامل های windows یا Mac قابل انجام است. (با کمی جستجو برای دستور تعریف و اضافه کردن یک آدرس به  Environment variable با نام PATH در ترمینال)برای توضیح این مسئله از یک آدرس WSDL که سرویس های آن به طور  رایگان قابل مشاهده است استفاده می کنیم:https://www.ebi.ac.uk/europepmc/webservices/soap?wsdlکه وقتی آن را در مرورگر جستجو می کنیم فایل XML قابل مشاهده هست:سپس پکیج Apache CXF در فرمت Binary distribution را دانلود می کنیم که فایل فشرده ای با فرمت tar.gz است که آن را از حالت فشرده خارج می کنیم. برای مثال من آن را در سیستم لینوکس ubuntu خودم در این مسیر Extract کرده ام./media/HDD1/Softwares/apache-cxf/حالا باید به سیستم بگوییم که فایل wsdl2java در پکیج apache-cxf کجاست. ;که در فولدر bin پکیج قرار دارد که برای من در این مسیر قرار دارد:/media/HDD1/Softwares/apache-cxf/apache-cxf-4.0.2/bin/media/HDD1/Softwares/apache-cxf/apache-cxf-4.0.2/binحال باید این مسیر را به Environment variable با نام PATH اضافه کنیم که در لینوکس در همان ترمینالی که می خواهیم دستور تولید فایل های .java را بدهیم این دستور (با توجه به مسیری که در بالا گفتم) را اجرا می کنیم:$ export PATH=/media/HDD1/Softwares/apache-cxf/apache-cxf-4.0.2/bin:$PATHبرای اینکه تست کنیم آیا در سشن ترمینال دستور wsdl2java که دایرکتوری آن در دستور بالا به PATH اضافه شده قابل اجرا هست (مسیر آن به PATH اضافه شده یا خیر) این دستور را اجرا می کنیم:$ wsdl2java -vکه اگر ورژن آن که در تصویر قابل مشاهده است برگردد یعنی کار به درستی انجام شده و آماده هستیم که فایل ها را با استفاده از این دستور و آدرس WSDL تولید (generate) کنیم. بدون اینکه ترمینال را ببندیم به دایرکتوری که میخواهیم فایل ها را generate کنیم می رویم برای مثال:حال در همان دایرکتوری با توجه به آدرس WSDL دستور زیر را اجرا می کنیم:$ wsdl2java  -client  &#x27;https://www.ebi.ac.uk/europepmc/webservices/soap?wsdl&#x27;که وقتی پس از اجرا ls (دستور مشاهده محتویات دایرکتوری در لینوکس) می گیریم مشاهده می کنیم که فولدر یا فولدر هایی ایجاد شده که فایل های جاوا در آن قرار دارد. که برای مثال داخل فولدر org را جستجو می کنیم:برای مطالعه بیشتر می توانید به این لینک مراجعه کنید:https://cxf.apache.org/docs/wsdl-to-java.html</description>
                <category>Hossein Jabani</category>
                <author>Hossein Jabani</author>
                <pubDate>Tue, 20 Jun 2023 16:56:09 +0330</pubDate>
            </item>
                    <item>
                <title>Take a screen shot in Linux</title>
                <link>https://virgool.io/passionForLinux/take-a-screen-shot-in-linux-mecnabezzq7i</link>
                <description>Hiif you want to take a screen shot in Linux you can use &quot;gnome-screenshot&quot; app.~$ sudo apt update~$ sudo apt install gnome-screenshotnow whenever you want to take a screenshot from whole screen just type:~$ gnome-screenshotif you want to take screen shot from an area add  -a  option:~$ gnome-screenshot -aif you want to take screen shot in interactive mode add -i option:~$ gnome-screenshot -iinteractive modeask where to save on interactive modemy Linux is ubuntu but it works on fedora too (debian &amp; redhat distributions).I hope it helps you :)</description>
                <category>Hossein Jabani</category>
                <author>Hossein Jabani</author>
                <pubDate>Fri, 24 Feb 2023 16:44:14 +0330</pubDate>
            </item>
                    <item>
                <title>نصب ابزار BI رایگان و سبک اما بسیار مفید Metabase</title>
                <link>https://virgool.io/@h.javooni/%D9%86%D8%B5%D8%A8-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1-bi-%D8%B1%D8%A7%DB%8C%DA%AF%D8%A7%D9%86-%D9%88-%D8%B3%D8%A8%DA%A9-%D8%A7%D9%85%D8%A7-%D8%A8%D8%B3%DB%8C%D8%A7%D8%B1-%D9%85%D9%81%DB%8C%D8%AF-metabase-pu0owcglvg2t</link>
                <description>با عرض سلام و وقت بخیردر این نوشته سعی می کنم تجربه خودم در نصب ابزار بسیار جذاب متابیس (چون خیلی باهاش کار کردم و بلدم باهاش کار کنم و خیلی اطلاعات جذابی ازش کشیدم بیرون می گم خیلی جذابه :) ) رو با شما در میان بگذارم.در ابتدا باید خدمتتون عرض کنم که این ابزار رو در محیط های مختلف (مثلا docker) میشه نصب کرد اما من قصد دارم نصب اون رو از طریق jar file خدمتتون بگم. اما برای آشنایی با طرق مختلف نصب در محیط های مختلف می تونید به این لینک مراجعه کنید.حالا شاید بپرسید متابیس چی هست؟!!متابیس ابزاری هست که به منابع دیتایی وصل میشه و شما می تونید با کوئری نمودار های BI رو در اون بسیازید و طلا از معادن دیتایی استخراج کنید یا با نمودارها داشبورد های مختلف با امکانات بسیار جذاب مثل auto refresh بسیازید!!. (و البته کاملاااا رایگان!!)اگر انگلیسی اکی هستید به این لینک برید و نصب کنید. (البته این لینک برخی چیزها رو نگفته که من سعی می کنم تجربه خودم رو با شما به اشتراک بگذارم در این مورد که البته شاید در موقعیت های دیگه نیازمندی های دیگری هم وجود داشته باشه ولی به هر حال من سعی می کنم تجربه خودم رو به اشتراک بگذارم)متابیس ابزاری هست که به زبان جاوا نوشته شده و قاعدتا شما قبل از نصب متابیس باید JDK رو نصب کنید که   من جاوا 8 رو نصب کردم... (environment variable رو هم ست کنید ...)و وقتی دستور:&gt; java -versionرو چه در shell لینوکس و چه cmd ویندوز بزنید باید یه چیزی شبیه تصویر زیر براتون چاپ بشه. که یعنی جاوا روی سیستم شما به درستی نصب آماده خدمت رسانی هست هر موقع صداش بزنید :).یک نکته مهم قبل از نصب این هست که چون متابیس by default روی پُرت 3000 سیستم میخواد listen بکنه  برای نصب یا اجرا این پرت باید باز باشه در سیستم. پس دستور زیر رو در cmd ویندوز اجرا کنید (البته معادل لینوکسی هم در shell داره) که ببینید آیا این پرت باز هست یا مشغوله؟که همونطور که در تصویر بالا می بینید اگر پُرت اشغال نباشه مثل تصویر بالا هیچ خروجی ای نخواهد داشت و اگر پرت مشغول باشه یه چیزی شبیه این نمایش داده میشه:که با توجه به دستور که گفتم برو پُرت 8089 سیستم من رو چک کن ببین چه خبره در جواب اومده که این PID یا همون process id های روی این پُرت تشریف دارند و این پرت رو اشغال کردند...برای این که این پُرت رو آزاد کنیم در ویندوز (که معادل لینوکسی هم داره) باید این command رو برای همه process id ها اجرا می کنیم:با این کار اون process در اون پُرت به شهادت میرسه و پیام SUCCESS رو نمایش میده.پس از آزادسازی پُرت (اگر اشغال بود) نصب رو شروع می کنیم.برای اجرای یک فایل اجرایی با پسوند jar (مثل jar فایل متابیس) در جاوا باید به مکان ذخیره اون فایل در سیستم برید (با دستور cd) و از فرم دستور زیر استفاده کنید:&gt;java - jar &lt;file-name&gt;پس به مکانی که فایل در آنجا ذخیره شده می رویم (که مثلا در سیستم من در این مکان هست E:\Metabase_install_location)***********************************************این مقاله در طی یکی دو روز آینده کامل می شود... :)***********************************************</description>
                <category>Hossein Jabani</category>
                <author>Hossein Jabani</author>
                <pubDate>Tue, 26 Jul 2022 19:16:49 +0430</pubDate>
            </item>
                    <item>
                <title>unrar multipart rar files on linux - چگونه فایل فشرده چند بخشی را در لینوکس اکسترکت کنیم</title>
                <link>https://virgool.io/@h.javooni/unrar-multipart-rar-files-on-linux-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D9%81%D8%A7%DB%8C%D9%84-%D9%81%D8%B4%D8%B1%D8%AF%D9%87-%DA%86%D9%86%D8%AF-%D8%A8%D8%AE%D8%B4%DB%8C-%D8%B1%D8%A7-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D8%A7%DA%A9%D8%B3%D8%AA%D8%B1%DA%A9%D8%AA-%DA%A9%D9%86%DB%8C%D9%85-avmyb2jyayxj</link>
                <description>فرض کنید که کی پکیج مانند این را از اینترنت دانلود کرده اید:که شامل چهار قسمت به شکل Baby.Einstain.part1.rar هست که به جای part1 می تواند مقادیر part2, part3 و part4 وجود داشته باشد. (در این مثال)ابتدا برنامه unrar را با دستور زیر نصب می کنیم:$ sudo apt-get install unrarسپس shell را در همان دایرکتوری باز می کنیم و با استفاده از دستور زیر به extract دیتای داخل فایل ها می پردازیم:$ unrar x Baby.Einstein.part1توجه کنید که نام فایل ابتدایی مجموعه را بدون .rar در دستور آوردیم.پس از اجرای دستور با یک چنین متنی روبرو خواهید شد که نشان دهنده انجام فرآیند اکسترکت دیتا هست:موفق باشید :)</description>
                <category>Hossein Jabani</category>
                <author>Hossein Jabani</author>
                <pubDate>Fri, 20 May 2022 16:29:29 +0430</pubDate>
            </item>
                    <item>
                <title>دیتابیس Mysql + رکوردهایی با زبان فارسی</title>
                <link>https://virgool.io/@h.javooni/%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-mysql-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF%D9%87%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D8%B2%D8%A8%D8%A7%D9%86-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-eyuwexmcdnjr</link>
                <description>شاید شما تجربه این را داشته باشد که در Mysql دیتابیسی ساخته اید و یک table در آن تعریف کرده اید اما وقتی فیلد های آن را با کارکتر های فارسی insert می کنید با عبارتی تو مخی :)‌ مثل ؟؟؟؟؟ روبرو می شوید!اگر با چنین چیزی مواجه شدید باید CHARACTER SET و COLLATION را هنگام تعریف دیتابیس به درستی ست کنید مانند دستور زیر:CREATE DATABASE TEST CHARACTER SET UTF8mb4 collate utf8mb4_general_ci;که در تصویر زیر در intellij idea اجزای عبارت واضح تر است:تعریف دیتابیس برای پشتیبانی از زبان فارسیکه در آن TEST نام دیتابیس خواهد بود و UTF8mb4 کاراکتر ست دیتابیس هست و utf8mb4_general_ci کولیشن هست و اگر در آن یک table تعریف کنیم مطمئن خواهیم بود که رکوردهای فارسی به درستی insert خواهد شد.خروجی به درستی کاراکترهای فارسی را نشان می دهد</description>
                <category>Hossein Jabani</category>
                <author>Hossein Jabani</author>
                <pubDate>Thu, 28 Apr 2022 10:04:41 +0430</pubDate>
            </item>
                    <item>
                <title>تجربه شخصی در پیاده سازی اپ Hello World با Spring AOP با استفاده از intellij Idea و Maven</title>
                <link>https://virgool.io/@h.javooni/%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%D8%B4%D8%AE%D8%B5%DB%8C-%D8%AF%D8%B1-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%A7%D9%BE-hello-world-%D8%A8%D8%A7-spring-aop-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-intellij-idea-%D9%88-maven-hldv1o6qvuru</link>
                <description>ابتدا یک پروژه ساده maven را در intellij ایجاد می کنیم:تصویر 1: تعریف پروژه mavenکامپایلر source و target جاوا را به mavenمعرفی می کنیم:تصویر 2: تعریف کامپایلر برای mavenو dependency های زیر را نیز به پروژه اضافه می کنیم:تصویر 3: تعریف dependency های مورد نیاز برای mavenپس از آن برای مثال پکیج com.springaop.sample و فایل appConfiguration که فایل کانفیگ spring هست را به این صورت به آن اضافه می کنیم:تصویر 4: اضافه کردن کلاس Application Configuration اسپرینگ به پروژهاما همانطور که ملاحظه می کنید intellij نام آن را هایلایت کرده است و وقتی موس را روی آن می برم اینطور راهنمایی می کند که:تصویر 5: مشاهده اخطار مهمی که intellij می دهدعدم توجه به این اخطار برای من  هزینه 4 روز زمان، انرژی، شکست و تلاش بود :) چون نمی دانستم که مشکل ممکن است از این موضوع باشد که برای برطرف کردن آن باید به این صورت عمل کنیم که به بخش project structure برویم: تصویر 6: رفتن به مسیر File و سپس Project Structureو 5 مرحله ی زیر را به ترتیب طی می کنیم:تصویر 7: پنج مرحله spring configuration file mapping در intellijدر مرحله بعد کلاس اجرایی spring که دارای متد main (کلاس اصلی اجرای پروژه)  هست را به پروژه اضافه می کنیم:تصویر 8: تعریف کلاس اجرایی پروژه در حال حاضر فضای کاری spring آماده است تا ما Object های خود را به spring context معرفی کنیم. برای این کار یک interface بسیار ساده که تنها یک متد دارد (که در جاوا به این interface ها اصطلاحا functional interface می گویند) می سازیم:تصویر 9: تعریف یک functional interfaceو یک implementation بسیار ساده از آن را به پروژه اضافه می کنیم:تصویر 10: تعریف یک implementation از interface معرفی شده ی قبلیبه کلاس اجرایی Application می رویم و این Bean تازه تعریف شده (با نام helloWorldImpl) را از context استخراج و متد ()sayHello آن را فراخوانی می کنیم:تصویر 11: استخراج Bean با نام helloWorldImpl از context و فراخوانی متد sayHello آناز برنامه یک اجرا می گیریم تا مطمئن شویم تا اینجای کار درست آمده ایم:تصویر 12: اجرای کلاس main پروژههمانطور که می بینید خروجی در کنسول چاپ شده است و این یعنی تا اینجای کار همه چیز اکی هست.پس از آن اولین Aspect خود را به پروژه اضافه می کنیم.برای اینکار یک package با نام aop داخل com.springaop.sample می سازیم و کلاسی با نام AopSample را به این صورت به آن اضافه می کنیم:تصویر 13: تعریف و اضافه کردن Aspect به پروژهسپس EnableAspectJAutoProxy@ را به کلاس AppConfiguration اضافه می کنیم:تصویر 14: اضافه کردن  EnableAspectJAutoProxy@ به فایل AppConfiguration.javaپس از انجام این مراحل وقتی برنامه را دوباره اجرا کنیم خروجی زیر را می گیریم که نشان میدهد aspect اجرا شده است:تصویر 15: اجرای نهایی برنامه و مشاهده اجرای aspect </description>
                <category>Hossein Jabani</category>
                <author>Hossein Jabani</author>
                <pubDate>Thu, 21 Oct 2021 13:39:38 +0330</pubDate>
            </item>
                    <item>
                <title>فیلتر archetype در دستور mvn archetype:generate در CMD</title>
                <link>https://virgool.io/@h.javooni/%D9%81%DB%8C%D9%84%D8%AA%D8%B1-archetype-%D8%AF%D8%B1-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-mvn-archetypegenerate-%D8%AF%D8%B1-cmd-r0igrjspnroz</link>
                <description>====================================================================توجه:(این پست جهت ثبت تجربه شخصی در مسئله ای که با آن مواجه بودم و حل شد نوشته شده و اگر ابهامی در آن برای خواننده هست عذرخواهی می کنم)====================================================================برای اینکه لیست همه archetype های maven را ببینیم از این دستور استفاده می کنیم:mvn archetype:generateتصویر 1: اجرای دستور بالاهمانطور که در تصویر بالا ملاحظه می کنید نتیجه اجرای دستور تعداد بسیار زیادی archetype هست که در لیست پایین تصویر ملاحظه می کنید که تعداد 17 عدد آنها در تصویر قابل ملاحظه است اما این لیست در این زمان که این پست را می نویسم تا 2990 عدد ادامه دارد! که انتهای لیست را در تصویر زیر می بینید:تصویر 2: انتهای لیست اجرای دستوراین تعداد بسیار زیاد است و پیدا کردن archetype مورد نظر در آن بسیار دشوار خواهد بود!اما با دستور زیر می توان یک archetype با یک groupId خاص را جستجو کرد:mvn archetype:generate -Dfilter=am.ik.archetype: که در آن am.ik.archetype همان groupId ای هست که در تصویر شماره یک ملاحظه می کنید که برای مثال از آن استفاده کردم:تصویر 3: فیلتر یک archetype دلخواههمانطور که ملاحظه می فرمایید تعداد 13 عدد از archetype مورد نظر که با آن groupId مشخص شده بودند در خروجی دستور برگشته اند.برای مثال بهتر groupId خود apache maven را با این دستور جستجو می کنیم:mvn archetype:generate -Dfilter=org.apache.maven.archetypes:که در تصویر زیر خروجی آن را ملاحظه می فرمایید که archetype های استاندارد maven را در لیست آورده است:تصویر 4: فیلتر archetype خود apache maven</description>
                <category>Hossein Jabani</category>
                <author>Hossein Jabani</author>
                <pubDate>Sun, 10 Oct 2021 14:17:57 +0330</pubDate>
            </item>
                    <item>
                <title>تبدیل تاریخ شمسی به میلادی و برعکس در دیتابیس اوراکل</title>
                <link>https://virgool.io/@h.javooni/%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B4%D9%85%D8%B3%DB%8C-%D8%A8%D9%87-%D9%85%DB%8C%D9%84%D8%A7%D8%AF%DB%8C-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%A7%D9%88%D8%B1%D8%A7%DA%A9%D9%84-qv9riyqn1bcl</link>
                <description>بنده قصد داشتم در دیتابیس اوراکل با وارد کردن تاریخ شمسی مانند &#x27;09:23:12 1399/06/20&#x27; تاریخ میلادی معادل را داشته باشم پس از جستجو و تلاش به این نتیجه رسیدم:SELECT TO_CHAR(TO_DATE(&#x27;1399/06/20 09:23:12&#x27;,&#x27;YYYY/MM/DD            HH:MI:SS&#x27;,&#x27;NLS_CALENDAR=persian&#x27;)           ,&#x27;YYYY/MM/DD HH:MI:SS&#x27;,&#x27;NLS_CALENDAR=GREGORIAN&#x27;) as mdFROM dualخروجی اجرای کوئری
برای تبدیل تاریخ میلادی مانند &#x27;09:23:12 2020/09/10&#x27; به شمسی نیز از این دستور می توان استفاده کرد:SELECT    TO_CHAR(TO_DATE(&#x27;2020/09/10 09:23:12&#x27;,&#x27;YYYY/MM/DD HH:MI:SS&#x27;),&#x27;YYYY/MM/DD HH:MI:SS&#x27;,&#x27;NLS_CALENDAR=persian&#x27;) as TARIKHFROM    DUALخروجی اجرای کوئری</description>
                <category>Hossein Jabani</category>
                <author>Hossein Jabani</author>
                <pubDate>Thu, 10 Sep 2020 13:25:08 +0430</pubDate>
            </item>
            </channel>
</rss>