انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

اوبونتو ۲۶٫۰۴ «راکون ثابت‌قدم» با پشتیبانی بلند مدّت منتشر شد 🎊

آخرین ارسال‌ها

صفحه: [1] 2 3 ... 10
1
معرفی نرم‌افزار / پاسخ : رسم دیاگرام منطق برنامه با Drawio
« آخرین ارسال توسط seyal دیروز ساعت 07:41 ب‌ظ »
نکته در مورد اشتراک این دیاگرام‌ها با ابزارهای AI :

برای اینکه بتونید این دیاگرامی که کشیدید رو با AI به اشتراک بزارید به این روش عمل کنید:
۱- ابتدا با نگه‌داشتن دکمه shift اون قسمت‌هایی که می‌خواهید در مورد منطقش با AI صحبت کنید رو از بالا به پایین انتخاب کنید.
۲- روی گزینه Export as xml در منو کلیک کنید و متن رو در کپی کنید.
۳-  با استفاده از ابزار یکی از این دو لینک زیر این قطعه کد xml رو به یک ساختار مرتب و تمیز دیاگرام mermaid تبدیل کنید که کمترین زوائد رو داشته باشه:
https://github.com/Salva5297/drawio2mermaid/tree/mainhttps://github.com/kornellewy/drawio_to_mermaidحتی می‌تونید خودتون یک ابزار بهتر هم بسازید اگر خواستید
۴- این ساختار mermaid حالا حجم حداقلی داره و می‌تونید به راحتی با AI اشتراک بزارید
۵- از AI بخواهید که خروجی که میده اون هم به فرمت mermaid باشه
۶- در اپ drawio می‌تونید کدهای mermaid رو در قسمت Arrange << Insert << Mermaid وارد کنید
۷- حالا به شکل گرافیکی دیاگرام اصلاح شده رو دارید می‌تونید اون قسمت‌هایی که مدنظرتون هست رو ببرید و در کد اصلی xml که داشتید جایگزین کنید.

یک نکته ریز هم برای ورک‌فلوی بهتر:
برای اینکه زیاد صفحه شلوع نشه می‌تونید از container ها استفاده کنید. مثلا به این لینک نگاه کنید توضیح داده که چطور باید از اونها استفاده کنید و چه مزیتی دارند:
https://www.drawio.com/docs/manual/shapes/container-shapes
2
معرفی نرم‌افزار / پاسخ : رسم دیاگرام منطق برنامه با Drawio
« آخرین ارسال توسط seyal دیروز ساعت 07:29 ب‌ظ »
خوب، از اونجایی که دوست نداشتم فایل‌ها مدام در فضای مرورگر ذخیره بشن و به اون وابسته باشند، از این روش نصب که بهتر و انعطاف‌پذیرتره استفاده می‌کنیم.

البته خود Draw.io فایل‌ها رو در فضای ذخیره‌سازی مرورگر نگه می‌داره، ولی مزیت این روش اینه که نصب برنامه، تنظیمات و اجرای اون کاملاً مستقل از مرورگر انجام می‌شه و هر زمان هم که بخوایم می‌تونیم فایل‌های ذخیره‌شده رو از فضای مرورگر استخراج کنیم.

۱- این پوشه رو جایی که دوست دارید بسازید:
mkdir drawio
cd drawio

۲- ساخت فایل docker compose :
nano docker-compose.yml
قرار دادن این محتویات و ذخیره فایل:

services:

drawio:
image: jgraph/drawio:latest
container_name: drawio
restart: unless-stopped
ports:
- "127.0.0.1:8181:8080"
environment:
DRAWIO_CONFIG: ${DRAWIO_CONFIG}
DRAWIO_USE_HTTP: "true"

۳- ساخت فایل متغیرها :
nano .env
قرار دادن این محتویات:

# Draw.io App Configurations
DRAWIO_CONFIG={"foldingIconSize":18,"ui":"light"}

این قسمت برای تعیین تنظیمات ظاهری Draw.io هست. مثلاً در اینجا تم برنامه رو روی حالت روشن گذاشتیم و اندازه‌ی آیکون‌های Collapse/Expand رو هم تعیین کردیم.

اگر بعداً خواستید تنظیمات دیگه‌ای رو تغییر بدید، کافی هست همین مقدار رو تغییر بدید و کانتینر رو دوباره اجرا کنید.

۴- اجرای Draw.io :

حالا در محیط همین پوشه این دستور رو اجرا کنید:

docker compose up -d
اینجا کار تموم هست.

حالا Draw.io از این آدرس در دسترس هست:

http://127.0.0.1:8181


استخراج فایل‌های Draw.io از فضای مرورگر

یک موردی که هست Draw.io فایل‌هایی که داخل خودش ایجاد یا ذخیره می‌کنیم رو در فضای ذخیره‌سازی مرورگر نگه می‌داره. بنابراین اگر مرورگر یا پروفایل مرورگر رو حذف کنیم، ممکنه این فایل‌ها هم از بین برن. البته خود drawio قابلیت دانلود تکی این فایلها رو به شما می‌ده.

برای اینکه فایل‌های واقعی .drawio رو مستقل از مرورگر داشته باشیم، می‌تونیم اون‌ها رو مستقیماً از فضای ذخیره‌سازی Draw.io استخراج کنیم.

درحالیکه در صفحه Draw.io هستید ابتدا F12 و سپس وارد قسمت Console بشید و این قطعه کد رو جایگذاری کنید:

(async () => {
if (!window.JSZip) {
await new Promise((resolve, reject) => {
const s = document.createElement("script");
s.src = "https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js";
s.onload = resolve;
s.onerror = reject;
document.head.appendChild(s);
});
}

const db = await new Promise((resolve, reject) => {
const r = indexedDB.open("database");
r.onsuccess = () => resolve(r.result);
r.onerror = () => reject(r.error);
});

const tx = db.transaction("files", "readonly");

const records = await new Promise((resolve, reject) => {
const r = tx.objectStore("files").getAll();
r.onsuccess = () => resolve(r.result);
r.onerror = () => reject(r.error);
});

db.close();

const files = records.filter(
x => x.title?.toLowerCase().endsWith(".drawio") && x.data
);

if (!files.length) {
console.log("No .drawio files found.");
return;
}

const zip = new JSZip();

for (const file of files) {
zip.file(file.title, file.data);
console.log("Added:", file.title);
}

const blob = await zip.generateAsync({
type: "blob",
compression: "DEFLATE"
});

const url = URL.createObjectURL(blob);
const a = document.createElement("a");

a.href = url;
a.download = "drawio-export.zip";
a.click();

setTimeout(() => URL.revokeObjectURL(url), 1000);

console.log(`✓ Exported ${files.length} Draw.io files`);
})();

این کد فایل‌های .drawio موجود در فضای ذخیره‌سازی Draw.io رو پیدا می‌کنه و همه رو داخل یک فایل به نام drawio-export.zip قرار می‌ده.

مثلاً اگر سه فایل داشته باشید:

SyncScript.drawio
Untitled Diagram.drawio
MyProject.drawio

خروجی به این شکل خواهد بود:

drawio-export.zip
├── SyncScript.drawio
├── Untitled Diagram.drawio
└── MyProject.drawio

بعد می‌تونید فایل ZIP رو در پوشه‌ای که برای فایل‌های Draw.io در نظر گرفتید Extract کنید.

یا اینکه حتی می‌تونید این عملکرد رو به شکل یک بوکمارک قابل کلیک در بیارید. کافیه که یک بوکمارک جدید تشکیل بدید و این کد زیر رو در قسمت URL جاگذاری کنید:
javascript:(async()=>{const d=await new Promise((r,j)=>{const x=indexedDB.open("database");x.onsuccess=()=>r(x.result);x.onerror=()=>j(x.error)}),f=await new Promise((r,j)=>{const x=d.transaction("files","readonly").objectStore("files").getAll();x.onsuccess=()=>r(x.result);x.onerror=()=>j(x.error)});d.close();const a=f.filter(x=>x.title?.toLowerCase().endsWith(".drawio")&&x.data);if(!a.length)return console.log("No Draw.io files found");const E=new TextEncoder,T=new Uint32Array(256);for(let n=0;n<256;n++){let c=n;for(let k=0;k<8;k++)c=c&1?0xedb88320^c>>>1:c>>>1;T[n]=c>>>0}const C=b=>{let c=0xffffffff;for(const x of b)c=T[(c^x)&255]^c>>>8;return(c^0xffffffff)>>>0},U=n=>new Uint8Array([n&255,n>>>8&255,n>>>16&255,n>>>24&255]),S=n=>new Uint8Array([n&255,n>>>8&255]),Q=(...x)=>{let r=new Uint8Array(x.reduce((s,a)=>s+a.length,0)),p=0;for(const a of x)r.set(a,p),p+=a.length;return r};let L=[],H=[],o=0;for(const x of a){const n=E.encode(x.title),b=E.encode(x.data),c=C(b),h=Q(U(0x04034b50),S(20),S(0x800),S(0),S(0),S(0),U(c),U(b.length),U(b.length),S(n.length),S(0),n);L.push(h,b);H.push(Q(U(0x02014b50),S(20),S(20),S(0x800),S(0),S(0),S(0),U(c),U(b.length),U(b.length),S(n.length),S(0),S(0),S(0),S(0),U(0),U(o),n));o+=h.length+b.length}const cd=Q(...H),z=Q(U(0x06054b50),S(0),S(0),S(a.length),S(a.length),U(cd.length),U(o),S(0)),u=URL.createObjectURL(new Blob([Q(...L),cd,z],{type:"application/zip"})),e=document.createElement("a");e.href=u;e.download="drawio-export.zip";e.click();setTimeout(()=>URL.revokeObjectURL(u),1e3);console.log(`%E2%9C%93 Exported ${a.length} Draw.io files`)})()

فقط یک نکته: این کد فقط فایل‌هایی که اسمشون با .drawio تموم می‌شه رو استخراج می‌کنه.
3
برنامه تقویم StarCalendar / StarCalendar 3.2.6
« آخرین ارسال توسط سعید رسولی 31 شهریور 1405، 10:20 ق‌ظ »
سلام به همه
نسخه دیگری از استارکل منتشر شد

لینک‌های دانلود و نکات انتشار انگلیسی
https://github.com/ilius/starcal/releases/tag/3.2.6

نکات انتشار فارسی
https://github.com/ilius/starcal/blob/main/doc/release/3.2.6-fa.md


4
معرفی نرم‌افزار / پاسخ : proofreading متون با Languagetool
« آخرین ارسال توسط seyal 31 شهریور 1405، 03:00 ق‌ظ »
جریان کاری من برای تولید محتوای متنی، صوتی و ویدیویی

خوب علاوه بر LanguageTool برای داشتن یک جریان کاری بهتر اومدم از گلدن‌دیکت و یک ابزار اصلاح متن با AI هم استفاده کردم.

به این روش عمل می‌کنیم:

۱- استفاده از واژه‌نامه:
با استفاده از گلدن‌دیکت و لینک داخل این پست که معرفی کرده بودم واژه‌نامه‌های فارسی به انگلیسی مثل آریان‌پور و انگلیسی به انگلیسی مثل Wornnet برای یافتن synonym ها رو نصب می‌کنیم
البته این مرحله بیشتر در اوایل کار همراه هست و هرچه جلوتر می‌ریم وابستگی ما به این مرحله هم کمتر می‌شه.
اینجا سعی می‌کنیم جمله‌ای که تو ذهنمون داریم رو با یافتن واژه‌های مناسب از این واژه‌نامه ها درست کنیم حتی اگر ساختار گرامری کاملا ابتدایی و بعضا غلط داشته باشه چون هدف این هست که ذهن آزادانه بتونه لحن خودش رو بیان کنه.

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

۳- استفاده از LLM ها:
برای راحتی بیشتر در این مرحله، اینجا یک ابزار دیگه رو هم معرفی می‌کنم به اسم Reply Better AI
لینک افزونه فایرفاکس
واقعا ابزار فوق‌العاده‌ای هست. به شما این امکان می‌ده که از مدل‌های هوش‌مصنوعی که دارید(حالا یا local مثل Ollama یا و یا اشتراکی مثل Openrouter) که دارید برای تصحیح متن و پیشنهاد جملات Refine شده استفاده کنید.
می تونید چند پرامپت  آماده تعریف کنید و به صورت گرافیکی آیکون با هایلایت کردن متن نمایش داده می‌شه و این سرعت فرایند و بهینگی تجربه کاربری رو چندبرابر می‌کنه.
با کلیک روی اون عنوانی که تعریف کردید، مدل هوش‌مصنوعی برای شما طبق پرامپت تعریف شده، متن رو بازنویسی می‌کنه و می‌تونید از اون ایده بگیرید و ساختار جمله رو اصلاح کنید.


یک نکته: برای اینکه خروجی با کیفیت داشته باشید باید ورودی باکیفیت هم بگیرید. پس سعی کنید در کنار تقویت این مهارت، از وبسایت‌های انگلیسی مثل Medium یا Substack یا ویدیوهای YouTube و پادکست‌های SoundCloud هم مقالات و پادکست با کیفیت گوش بدید تا ذهنتون با ساختار طبیعی زبان مقصد خو بگیره و بتونه استانداردها رو بهتر تشخیص بده.(یا وبسایت‌های آزادی که در ادامه دوستان معرفی می‌کنند).

ادامه مراحل برای رسیدن به ضبط ویدیو باکیفیت:

۱- تقویت speaking :
برای تقویت speaking ابتدا از همین متن مقاله‌ها و تکست‌هایی که نوشتیم شروع می‌کنیم و سعی می‌کنیم ابتدا این توانایی رو به دست بیاریم که بتونیم اونها رو به ویس تبدیل کنیم. وقتی این مهارت speaking در ما تا حد قابل قبولی تقویت شد می‌تونیم از اون در تولید ویدیو استفاده کنیم.
به این روش عمل می‌کنیم که سعی کنید الان این متنی رو که خودتون نوشتید و تصحیح کردید، بدون روخوانی از روی اون و در حالت فی‌البداهه، به صورت قطعه قطعه به یک ویس‌مسیج یا پادکست تبدیل کنید. اینجا برنامه Audacity خیلی می‌تونه برای تولید صوت‌های با کیفیت و مدیریت و تنظیم overlapping به شما کمک کنه.
این کار علاوه بر تقویت هر دو مهارت باعث می‌شه که مخاطبین بیشتری هم بتونید جذب کنید چون بعضیا بیشتر میل به نسخه صوتی و ارتباط‌گیری با لحن گوینده دارند و پس از انجام چندباره این کار ضبط ویدیو بسیار برای شما آسان‌تر خواهد شد.

۲- ضبط ویدیو:
توصیه‌ام برای ویدیو این هست که یکبار بدون pause کل ویدیو رو ضبط کنید. مثلا شاید حتی بشه سه ساعت. حالا با برنامه kdenlive اون تکه‌های اضافی مثل loading صفحه وب و .. رو حذف کنید به یک ویدیو حدودا ۲۰ دقیقه‌ای می‌رسید.
حالا با الگوگیری از ویس طبیعی ویدیو قبلی که خودتون گفته بودید، و به روش تقویت speaking که مرحله قبل گفتیم با برنامه audacity قطعه به قطعه برای این ۲۰ دقیقه ویس ضبط کنید و جاگذاری کنید.
برای زیباتر کردن ویدیو و افزودن جلوه‌های تصویری دوبعدی ساده هم می‌تونید از نرم‌افزار Natron استفاده کنید و وقتی اون قطعه‌ها رو ساختید(مثل نمایش لوگو روی تصویرزمینه و ...) با kdenlive اونها رو به هم بچسبونید و افکت صوتی بزارید و به یک خروجی حرفه‌ای و زیبا برسید.


شما چه تجربه‌ای دارید؟
5
معرفی نرم‌افزار / proofreading متون با Languagetool
« آخرین ارسال توسط seyal 30 شهریور 1405، 08:12 ق‌ظ »
معرفی LanguageTool ابزاری برای تصحیح گرامری بدون اتصال به اینترنت

می‌خواستم ویدیو به انگلیسی بگیرم اما دیدم که من اصلا هنوز به سبک درستی قواعد گرامری رو رعایت نمی‌کنم و اول باید نوشتار خودم رو درست کنم و این قاعده‌ها رو کم‌کم تو ناخودآگاه خودم جا بندازم و بعد از چند تمرین حرف‌زدن با رعایت این قواعد، به سمت ویدیو برم که کیفیت قابل قبولی داشته باشه. بنابراین نیاز به ابزاری داشتم که کار proofreading یا تصحیح املایی و گرامری رو برای من انجام بده.

مشکلی که مدل‌های هوش‌مصنوعی داشتند این بود که:
۱- دیگه لحن و قلم خودم رو نداشتم(یعنی فقدان Personal branding)
۲- وابستگی شدیدی ایجاد می‌کرد و مثل این بود که مدام از حل‌المسائل برای حل سوالات استفاده کنی.(البته به مدل استفاده ما از هوش‌مصنوعی هم بستگی داره اما خوب اکثرا ذهن ما پیش‌فرض از این روش استفاده می‌کنه وقتی مرحله به مرحله پیش نریم)

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

وبسایت‌های آنلاین متعددی مثل Grammarly, Quilbot و … هستند که می‌تونید از اونها استفاده کنید اما مشکلی که داشتند:
۱- باید حتما به اینترنت وصل باشیم
۲- نمی‌خواستم هرچه می‌نویسم رو آنلاین به اشتراک بزارم.
۳- رابط کاربری سنگینی اکثرا داشتند و کار با اونها روان نبود.
۴- به خوبی نمی‌تونستم اونها رو تو برنامه‌های دیگه ادغام کنم.

پس از جستجو برای یافتن یک ابزار محلی، به languagetool رسیدم.
البته این ابزار وبسایت آماده هم مثل موارد بالا که اشاره کردیم داره , برای امتحان کردن و آشنایی با قابلیت‌های languagetool می‌تونید از وبسایت خودش هم استفاده کنید.
لینک گیتهاب - لینک وبسایت


اما برای نصب محلی:

اگر یک نسخه مینیمال کارتون رو راه می‌ندازه می‌تونید از Flathub برنامه Eloquent رو نصب کنید:
لینک فلت‌هاب
خودش به صورت built-in این ابزار رو اجرا می‌کنه اما با این روش انعطاف کمی دارید و صرفا به قابلیت‌های همین برنامه متکی هستید و برای ادغام در لیبره‌آفیس و افزونه فایرفاکس نصب languagetool server رو پیشنهاد می‌کنم که برای نصب و راه‌اندازی اون طبق این مراحل عمل می‌کنیم:

مرحله اول: نصب با داکر
برای نصب الگوگیری من از این وبسایت بود اما با مشکل اجرا می‌شد و یک‌سری تغییرات ریزی رو اعمال کردم:
لینک https://fariszr.com/host-language-tool-with-docker/

۱- این پوشه رو ایجاد کنید و وارد بشید:
mkdir languagetool
cd languagetool
این پوشه رو می‌تونید هرجا خواستید تشکیل بدید.

۲- با یک دانلود منیجر این دو تا فایل رو دانلود کنید(اولی حجمش کمی بالاست):
فایل N-gram :
https://languagetool.org/download/ngram-data/ngrams-en-20150817.zipفایل Fasttext :
https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.bin
۳- دو تا فایلی که از مرحله قبل دانلود کرده بودیم:
فایل N-gram: در همین پوشه unzip کنید
فایل Fasttext: مستقیم در همین پوشه قرار بدید و اسم فایل رو به fasttext-model.bin تغییر بدید
یعنی  باید ساختار پوشه تا به اینجا چنین چیزی بشه:
❯ tree -L 2
.
├── fasttext-model.bin
└── ngrams
    └── en

۳- یک فایل Dockerfile به این صورت تشکیل بدید:
nano Dockerfileو سپس این محتویات رو جاگذاری و ذخیره کنید:
FROM erikvl87/languagetool:latest
USER root
RUN apk add fasttext
USER languagetool

۴- فایل docker compose رو به این صورت ایجاد می‌کنیم:
nano docker-compose.ymlو این محتویات رو قرار می‌دیم:
services:
  languagetool:
    build: .
    container_name: languagetool
    restart: always
    tmpfs:
      - /tmp:exec
    cap_drop:
      - ALL
    cap_add:
      - CAP_SETUID
      - CAP_SETGID
      - CAP_CHOWN
    security_opt:
      - no-new-privileges
    ports:
      - 8010:8010
    environment:
      - langtool_languageModel=/ngrams
      - Java_Xms=512m
      - Java_Xmx=3g
      # Remove these lines:
      # - langtool_fasttextBinary=/usr/bin/fasttext
      # - langtool_fasttextModel=/fasttext-model.bin
    volumes:
      - ./ngrams:/ngrams
      # You can also remove this if you're using the auto-downloaded model:
      # - ./fasttext-model.bin:/fasttext-model.bin

۴- تا این مرحله باید به چنین ساختاری رسیده باشید:
❯ tree -L 2
.
├── docker-compose.yml
├── Dockerfile
├── fasttext-model.bin
└── ngrams
    └── en

اینجا دیگه تقریبا کار اصلی تمومه. این دستور رو اجرا کنید و پس از دانلودشدن موفقیت آمیز ایمیج‌های اولیه، سرویس راه‌اندازی می‌شه.
docker compose up -d --build
۵- می‌تونید با اجرای دستور زیر در ترمینال از درست کردن برنامه اطلاع پیدا کنید:
curl -s -d "language=en-US" -d "text=I will go to there house." http://localhost:8010/v2/check | jqبرای اینکه بتونیم به طور گرافیکی از قابلیت‌های این ابزار استفاده کنیم باشیم سری مرحله بعد رو دنبال کنید.


مرحله دوم: دسترسی به API محلی از طریق افزونه

۱- ابتدا افزونه مرورگر اون رو از این لینک نصب می‌کنیم:
لینک افزونه فایرفاکس

۲- با راست‌کلیک کردن روی آیکون افزونه و انتخاب گزینه manage extension و سپس در صفحه جدید بازشده با کلیک روی سه نقطه و سپس گزینه preference وارد تنظیمات افزونه می‌شیم.


۳- به انتهای صفحه برید و  قسمت Advanced settings رو به این صورت تنظیم و ذخیره کنید:


۴- حالا اگر تنظیمات پیش‌فرض افزونه رو تغییر نداده باشید الان هرجا اقدام به تایپ کردن کنید(حتی در آدرس‌های local) این افزونه اشتباهات گرامری رو به شما به همراه جایگزین صحیح نشون میده و با یک کلیک اون اشتباه رو درست می‌کنه.



البته اگر از قابلیت فعال شدن سراسری خوشتون نمیاد می‌تونید غیرفعال کنید و صرفا طوری تنظیم کنید که وقتی منوی افزونه رو باز کردید از اونجا اشکالات متن رو تشخیص بده. همچنین پس از تصحیح اولیه با مدل لوکال و حفظ بیان خودتون، می‌تونید به خود وبسایت languagetool برید و اونجا به صورت پیشرفته‌تر حتی لحن متن و سایر ویژگی‌ها رو هم با LLM آماده اون تغییر بدید(البته این مورد نیاز به اشتراک داره اما خوب می‌تونید از مدل‌های هوش‌مصنوعی دیگه‌ای که دارید استفاده کنید).
البته اگر اون رو هم خواستید کنترل داشته باشید این پروژه جالبی هست:
https://github.com/pluja/llm-language-tool
6
کافه اوبونتو / منتقل شده: غافل شدن از برنامه‌های docker !
« آخرین ارسال توسط esmaeelE 30 شهریور 1405، 12:06 ق‌ظ »
7
شبکه و سرویس‌ دهنده‌ها / پاسخ : تنظیم پروکسی برای carburetor
« آخرین ارسال توسط seyal 29 شهریور 1405، 09:29 ق‌ظ »
فکر کنم هربار از یک فایل موقتی استفاده می‌کنه:

tor -f /tmp/tmpi7n0kae3/tractorrc
شاید با خود tractor بهتر بشه مدیریت کرد.
8
شبکه و سرویس‌ دهنده‌ها / پاسخ : تنظیم پروکسی برای carburetor
« آخرین ارسال توسط Dragon- 28 شهریور 1405، 10:49 ب‌ظ »
خود تور این قابلیت را داره که از یه پروکسی http یا https استفاده کنه. با تنظیم HTTPProxy و HTTPSProxy توی فایل torrc میشه اینکار را انجام داد. می‌تونید برای اطلاعات بیشتر، یه نگاه به لینک بندازید.

نمی‌دونم کاربراتور اجازه تنظیم چنین چیزی را میده یا نه ولی ببینید جایی توی کاربراتور می‌تونید به طور دستی تنظیمات torrc اضافه کنید یا نه.

اگه بالایی ممکن نبود، این یکی را بررسی کنید:
اگه اشتباه نکنم، تور می‌تونه چندین فایل torrc را بخونه. پس اگه بشه دستوری که کاربراتور با اون تور را اجرا می‌کنه، ویرایش کرد، میشه فایل torrc خودتون که شامل تنظیمات HTTPSProxy یا HTTPProxy هست را به تور معرفی کنید.
برای مثال اگه کاربراتور، تور را به شکل زیر اجرا می‌کنه:
/usr/bin/tor -f /path/to/carburetor/torrc

می‌تونید به این شکل فایل torrc خودتون که شامل اون تنظیمات هست را به تور معرفی کنید:
/usr/bin/tor -f /path/to/carburetor/torrc -f /path/to/your/torrc

البته همه اینها به شرطی هست که کاربراتور اجازه ویرایش دستور اجرای تور را بده. این چیزی که بالا نوشتم، مفهوم و کلیت کاری هست که باید انجام بشه، جزئیات باید بسته به شرایط تنظیم بشن. (بیشتر منظورم مسیر فایل‌های torrc هست)
9
معرفی نرم‌افزار / مدیریت پست‌ها و نوشته‌ها با Leafwiki
« آخرین ارسال توسط seyal 28 شهریور 1405، 08:46 ب‌ظ »
به یک ابزاری نیاز داشتم که با اون بتونم متن رو برای شبکه‌های اجتماعی به شکل مارک‌داون بنویسم و سپس خروجی اون رو هم بتونم به صورت زنده ببینم.
یک چیزی مثل ویکی که اگر نوشته من طولانی شد بتونم بهش زیرعنوان اضافه کنم
و حتی اگر خواستم در بقیه دستگاه‌ها هم در دسترس باشه

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

لینک گیتهاب - لینک دمو

و اما روش نصب اون با داکر هست چون خودم تو نصبش با چالش مواجه شدم اینجا روش نصب رو هم می‌زارم:(از docker compose استفاده می‌کنیم)

۱- ترمینال رو باز کنید و این پوشه رو بسازید:
mkdir -p /home/$USER/.local/opt/leafwiki
cd /home/$USER/.local/opt/leafwiki

۲- فایل docker-compose رو به این شکل در این مسیر درست کنید:
nano docker-compose.ymlو جایگذاری این محتویات:
services:
  leafwiki:
    image: ghcr.io/perber/leafwiki:latest
    container_name: leafwiki
    ports:
      - "2231:8080"
    environment:
      - LEAFWIKI_JWT_SECRET=CHANGE_THIS_TO_A_LONG_RANDOM_SECRET_KEY
      - LEAFWIKI_ADMIN_PASSWORD=12345678
      - LEAFWIKI_ALLOW_INSECURE=true
    volumes:
      - leafwiki-data:/app/data
    restart: unless-stopped

volumes:
  leafwiki-data:
دقت کنید فیلدها رو من برای سادگی hard code کردم، پسورد و نام کاربری و secret key رو حتما برای امنیت بیشتر تغییر بدید.

۳- اجرا کردن این دستور در همین مسیر:
docker compose up -dپس از اجرا شروع به دانلود ایمیج‌های مورد نیاز برای راه‌اندازی سرویس می‌کنه و کمی طول می‌کشه.

۴- پس از نصب موفقیت آمیز، با بازکردن مرورگر به این صورت می‌تونید به ویکی دسترسی داشته باشید:
http://localhost:2231اگر موارد بالا رو تغییر نداده باشید مقادیر رو باید به این صورت وارد کنید:
نام کاربری: admin
رمزعبور: 12345678

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


یک نکته در مورد مدیریت پست‌ها و پروژه‌ها:
این که یک ابزاره و کاربردهای متنوعی داره اما در مورد مدیریت پست‌ها با استفاده از این ابزار و شبکه‌های اجتماعی، می‌تونید برای هر پروژه یک صفحه درست کنید، حالا به صورت تایم‌لاین از پیشرفتتون در اون پروژه و کارهایی که کردید و یا ویژگی‌ها به صورت story mode پست بزارید
برای پست‌های کوچک مثل ماستودون نیاز به تشکیل صفحه ندارید. اما اگر مثلا مقاله بلند بود یک زیر صفحه براش تشکیل می‌دید.
این‌طوری هروفت خواستید تو شبکه‌های اجتماعی‌تون در مورد پروژه حرف بزنید با یک نگاه به این story line می‌تونید بفهمید که الان چه چیزی رو باید پست کنید.
مثلا پست ماستودون می‌تونه این باشه:
* امروز در حال کار بر روی فلان ویژگی بودم که استفاده از فلان کتابخونه به دردم خورد. لینک ویدیوش رو ضبط کردم از اینجا{قراردادن لینک} می‌تونید تماشا کنید.
به این ترتیب کم کم پروژه‌تون تبلیغ هم می‌شه.
برای پروژه‌های مختلف هم می‌تونید صفحات مختلف تشکیل بدید.
اگر نیاز به یک ابزار جامع هم داشتید که خودکار پست‌ها رو در شبکه‌های اجتماعی که مشخص می‌کنید بفرسته می‌تونید از پروژه openpost بازدید کنید.
10
معرفی نرم‌افزار / درگاه پرداخت مثل stripe
« آخرین ارسال توسط seyal 28 شهریور 1405، 10:03 ق‌ظ »
ابزارها و روش‌های راه‌اندازی درگاه پرداخت مستقیم بدون نیاز به سرویس‌های متمرکز

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

چند توضیح کلی قبل از شروع این چند نکته که برای انتخاب این ابزارها برای داشتن یک تجربه‌کاربری خوب مدنظر داشتم رو بگم:
۱- ترجیح خودم به جای بیت‌کوین استفاده از stable coin ها هست. چون کاربر بدون نگرانی از اینکه مبلغ رو اشتباه وارد کنه و با اعشار عجیب و غریب رو به رو بشه می‌تونه پرداخت رو انجام بده. بعد اگه خواستید خودتون به ارز دیگه‌ای تبدیل می‌کنید.
۲- داشتن قابلیت تایید تراکنش و نشان دادن صفحه پرداخت موفق به کاربر پس از انجام شدن تراکنش
۳- محدود نبودن به ولت یا صرافی خاص
۴- نیاز نداشتن به KYC و احراز هویت که برای ما در دسترس نیست
۵- پشتیبانی از شبکه‌های رایج مثل polygon, bnb, trone
۶- لینک قابل کلیک کردن برای کاربر و دیدن شفاف جزئیات
۷- پنل کاربری و صدور فاکتور بر حسب اسم مشتری
۸- قابلیت embed شدن به صورت لینک در وبسایت شخصی یا حتی گیتهاب
۹- توانایی تشکیل صفحه donation, invoice, shop

هرچند روش‌های ما بر پایه cryptocurrency هست اما ارزهای دیجیتال به تنهایی نیاز رو رفع نمی‌کنند
مثلا اگه بخواید coingate که یکی از معروف‌ترین سرویس‌دهنده‌ها  یک درگاه پرداخت داشته باشید باید فرآیند احراز هویت پیچیده و ثبت شرکت رو طی کنید.
و کاربرد این پروژه‌ها فقط برای کاربران تحریم‌شده نیست. اگر مثلا ساب‌ردیت‌هایی مثل Wise transfer رو دنبال کرده باشید می‌بینید که کاربران اون‌طرف هم از suspend شدن های گاه و بی‌گاه حساب بانکی‌شون به خاطر این خرده‌ تراکنش‌ها گزارش‌های متعددی رو ارائه کردند


دسته اول: راهکارهای بدون نیاز به Hosting

۱- ساخت DeepLink
این روش جزو ساده‌ترین ها هست. والت‌های متامسک و تراست‌والت از deeplink پشتیبانی می‌کنند
یعنی شما می‌تونید یک لینک یا qr code بسازید که کاربر با اسکن کردن اون توسط scan ولت، به طور خودکار مبلغ و شبکه انتقال رو مثل یک فرم برای کاربر پرکنه و کاربر صرفا نیاز به تایید کردن نهایی تراکنش داره. اما خوب عیبی که داره:
۱. برای هر ارز و شبکه باید دیپ‌لینک جدا درست کنید
۲. نیاز به تایید دستی تراکنش‌ها
۳. محدود بودن به کیف پول خاص(چون هر کیف پول deeplink مخصوص خودش رو داره البته یک استاندارد کلی هم تعریف هست که ساختار واحد داشته باشند اما اون رو من امتحان کردم کیف‌پول‌ها به خوبی با اون سازگاری نداشتند)


دسته دوم: راهکارهای self-hosted

این پروژه ها رو می‌تونید با نصب نسخه داکر اونها به راحتی روی یک VPS اجرا کنید و کنترل کامل روی تراکنش‌هاتون داشته باشید.
۱- BTCpay server:
لینک گیتهاب - لینک وبسایت
این پروژه gold standard این حوزه هست
شما خودتون درگاه پرداخت رو میزبانی می‌کنید و تایید تراکنش‌ها و صدور فاکتورها به راحتی انجام می‌شه
می‌تونید اون رو با shopify ادغام کنید و یا صفحه donate اختصاصی داشته باشید
قابلیت‌های فوق‌العاده زیادی داره. توصیه می‌کنم ویدیوهاش رو ببینید.
معایب:
بیشتر برای بیت‌کوین استفاده می‌شه هرچند سایر رمزارزها هم با پلاگین قابل دسترسی هستند اما محدود هست.
اون قابلیت مد نظر من که پرداخت با stable coin ها هست به خوبی پشتیبانی نمی‌شه.

۲- Payram :
لینک گیتهاب - لینک مستندات
مثل BTCpay server هست اما از شبکه‌های متنوع و stable coin ها پشتیبانی می‌کنه و تایید تراکنش خودکار در اونها رو هم داره
شاید بپرسید مکانیزم این تایید تراکنش چطوری هست؟
با استفاده از smart contract ها یعنی برای هر کاربر با استفاده از این روش یک آدرس منحصر به فرد برای پرداخت ساخته می‌شه و به این شکل می‌شه انجام شدن تراکنش رو متوجه شد. البته تمامی شبکه‌ها از smart contract پشتیبانی نمی‌کنند اما همون‌هایی که پشتیبانی می‌کنند درصد عمده‌ای از بازار رو تشکیل دادند.
شبکه ترون و شبکه اتریوم و زیرلایه‌های اون(مثل پلی‌گان و آربیتروم) از smart contract پشتیبانی می‌کنند.
معایب:
۱- منابع پردازشی نسبتا زیادی می‌خواد (چون خودش باید شبکه رو برای تایید تراکنش‌ها اسکن کنه)
۲- راه‌اندازی اولیه تا حدی سخت هست و نیاز به ssl و ... دارید هرچند یک اسکریپتی داره که خودکار این ها رو براتون انجام می‌ده.

۳- Shkeeper :
این پروژه بیشترین شباهت رو به directcryptopay که انتهای مطلب آوردم داره و خیلی از ویژگی هایی که بالا ذکر کردیم رو به همراه داره:
لینک گیتهاب - لینک وبسایت
نسبت به دو مورد بالا خیلی سبک‌تر هست.

پروژه‌های تو این حوزه بسیار متنوع هست چند مورد دیگه که شخصا بررسی نکردم:
Depay:
https://github.com/DePayFi
depay.com

Xcash
https://xca.sh/en/
https://github.com/xca-sh/xcash

در پایان این قسمت هم بگم حتی دامنه این ابزارها صرفا محدود به وبسایت نیست. می‌تونید چیزی شبیه به دستگاه‌های POS رو هم داشته باشید این لینک گیتهاب رو ببینید:
github.com/cipherwebllc/openpay

دسته سوم: درگاه‌های واسط شخص‌ثالث

۱- درگاه‌های پرداخت حضانتی:
معروف‌ترین اونها coingate بود که گفتیم.
مزیتش اینه که کاربر می‌تونه با هر ارزی که توسط وبسایت ارائه‌دهنده(یعنی همون coingate) ارائه می‌ده پرداخت کنه و شما مبلغ رو به اون صورتی که تنظیم کردید(مثلا usdt) دریافت می‌کنید.
اما عیبی که دارند این هست که:
۱. یک شخص ثالثی بین شما و پول دریافتی از کاربر وجود داره و می‌تونه تراکنش شما رو به دلخواه خودش مسدود کنه.
۲. نیاز به احراز هویت (KYC) دارند که برای ما در دسترس نیست.

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

۱- وبسایت Nowpayments:
وبسایت معروفی هست.
۱. نیاز به kyc (به جز برای قابلیت‌های خاص مثل پرداخت به حساب بانکی به جای کیف‌پول) نداره
۲. مستقیم به ولت شما واریز می‌شه.

اما به شخصه از تجربه کاربری که برای پرداخت‌کننده به همراه داره خوشم نیومد
کسی که زیاد با دنیای ارز دیجیتال آشنایی نداره بخواد با این پرداخت کنه تا حد زیادی بین انتخاب هزاران رمزارز گیج می‌شه
خصوصا اینکه یک لینک مستقیم هم نداره که با کلیک روی اون پرداخت خودکار انجام بشه هرچند qr code می‌ده و چند تا اپ محدود هم پشتیبانی می‌کنه.


۲- وبسایت Directcryptopay :
گزینه بعدی DirectCryptoPay هست.
تو این سرویس شما با صرفاً چند کلیک و یک ایمیل می‌تونید اکانت بسازید و بدون نیاز به احراز هویت، تراکنش‌ها رو مدیریت کنید. همون حس کنترل کامل روی پرداخت‌ها رو بهتون می‌ده که سرویس‌های self-hosted ارائه می‌دن.
نکات مثبت:
*   پول به‌صورت مستقیم به کیف پول خودتون واریز می‌شه؛ یعنی از حساب شخص ثالثی که ممکنه بدون اطلاع شما مسدود بشه یا دسترسی‌تون رو قطع کنه، خبری نیست.
*   می‌تونید صفحه دونیت یا پرداخت داشته باشید و اون رو داخل وب‌سایت شخصی‌تون embed کنید.
*   سیستم‌های پرداخت کارت بانکی رو هم پشتیبانی می‌کنه؛ کاربر می‌تونه با کارت پرداخت کنه، مبلغ به رمزارز تبدیل شده و به حسابتون واریز می‌شه.
*   حتی مکانیزم تایید تراکنش و نمایش صفحه «پرداخت موفق» رو هم داره که برای تجربه کاربری خوب خیلی مهمه.
*   می‌تونید ارزها و شبکه‌هایی که کاربر می‌تونه انتخاب کنه رو محدود کنید تا گیج نشه.
    *   مثال خودم: USDT و USDC روی شبکه‌های Polygon, BNB و Arbitrum.
    *   دلیلش اینه که هم استیبل‌کوین باشه، هم کارمزد شبکه خیلی کم باشه. این موضوع باعث می‌شه کاربر با خیال راحت‌تر پرداختش رو انجام بده.
نکته‌ای که وجود داره اینه که در پلن رایگان، تا سقف مشخصی از تعداد تراکنش در ماه محدودیت دارید. البته این همون مدل درآمدی سایت هست و برای بیشتر فریلنسرها یا کسب‌وکارهای کوچیک کاملاً کافیه. اگه هزینه نگهداری سرور، دامنه و تنظیمات سرویس‌های self-hosted رو در نظر بگیرید، از نظر من این گزینه خیلی به‌صرفه‌تر و ساده‌تر می‌تونه باشه.
به‌طور کلی، برای کسی که می‌خواد بدون دردسر شروع کنه و در کنار سادگی، یه ظاهر موجه و رابط کاربری قابل قبول هم داشته باشه، این گزینه انتخاب بهتری از موارد پیچیده‌تر قبلی به نظر می‌رسه. تقریبا بیشتر نیازهایی که اول پست گفتم رو پوشش می‌ده.
دو تا نکته هم اضافه کنم:
*   سایتش نسبتا تازه تاسیس هست، ولی من تست کردم و پرداخت انجام داد و مشکلی نداشتم. برای سازگاری بهتر، لینک پرداخت رو از طریق web view کیف پول مورد نظرتون باز کنید.
*   استیبل‌کوین‌ها ریسک دارن: چون شرکت‌های صادرکننده‌شون مثل Tether یا Circle می‌تونن توکن‌ها رو در کیف پول شما هم مسدود کنن. پس بهتره بعد از دریافت، سریع به ارز یا شبکه‌ی مورد اعتمادتون تبدیلشون کنید.
    *   اگه حتما می‌خواید داخل ولتتون استیبل‌کوین نگه دارید، گزینه‌های غیرمتمرکز مثل DAI یا USDS منطقی‌تر هستند.

شما چه تجربه‌ای از این پروژه‌های درگاه پرداخت دارید؟
صفحه: [1] 2 3 ... 10