KStars เป็นซอฟต์แวร์ดาราศาสตร์ข้ามแพลตฟอร์มโอเพ่นซอร์สฟรี
โดยให้การจำลองกราฟิกท้องฟ้ายามค่ำคืนที่แม่นยำจากสถานที่ใดๆ บนโลก ในวันและเวลาใดก็ได้ การจัดแสดงประกอบด้วยดวงดาวมากถึง 100 ล้านดวง วัตถุในท้องฟ้าลึก 13,000 ดวง ดาวเคราะห์ทั้ง 8 ดวง ดวงอาทิตย์และดวงจันทร์ ดาวหาง ดาวเคราะห์น้อย ซูเปอร์โนวา และดาวเทียมหลายพันดวง
สำหรับนักเรียนและครู ระบบรองรับความเร็วในการจำลองที่ปรับได้เพื่อดูปรากฏการณ์ที่เกิดขึ้นในช่วงเวลาที่ยาวนาน เครื่องคิดเลข KStars Astrocalculator เพื่อทำนายคำสันธาน และการคำนวณทางดาราศาสตร์ทั่วไปอีกมากมาย สำหรับนักดาราศาสตร์สมัครเล่น จะมีเครื่องมือวางแผนการสังเกต เครื่องมือปฏิทินท้องฟ้า และโปรแกรมแก้ไข FOV เพื่อคำนวณขอบเขตการมองเห็นของอุปกรณ์และแสดงผล ค้นหาวัตถุที่น่าสนใจในเครื่องมือ "What's up Tonight" พล็อตกราฟระดับความสูงเทียบกับเวลาสำหรับวัตถุใดๆ พิมพ์แผนภูมิท้องฟ้าคุณภาพสูง และเข้าถึงข้อมูลและทรัพยากรมากมายเพื่อช่วยคุณสำรวจจักรวาล!
สิ่งที่รวมอยู่ใน KStars คือชุดการถ่ายภาพดาราศาสตร์ของ Ekos ซึ่งเป็นโซลูชันการถ่ายภาพดาราศาสตร์ที่สมบูรณ์แบบที่สามารถควบคุมอุปกรณ์ INDI ทั้งหมดได้ รวมถึงกล้องโทรทรรศน์ CCD กล้อง DSLR ตัวโฟกัส ฟิลเตอร์ และอื่นๆ อีกมากมาย Ekos รองรับการติดตามที่แม่นยำสูงโดยใช้ตัวแก้ปัญหาโหราศาสตร์แบบออนไลน์และออฟไลน์ ความสามารถในการโฟกัสอัตโนมัติและการนำทางอัตโนมัติ และการจับภาพเดี่ยวหรือหลายภาพโดยใช้ตัวจัดการลำดับอันทรงพลังในตัว
ลิขสิทธิ์ (c) 2001 - 2024 โดยทีมงาน KStars:
KStars เป็นซอฟต์แวร์เสรีที่เผยแพร่ภายใต้สัญญาอนุญาตสาธารณะ GNU ดูการคัดลอกข้อมูลใบอนุญาต GPL
KStars พร้อมใช้งานสำหรับ Windows, MacOS และ Linux คุณสามารถดาวน์โหลดเวอร์ชันล่าสุดได้จากเว็บไซต์อย่างเป็นทางการของ KStars
บน Linux สามารถใช้งานได้กับ Linux ส่วนใหญ่
เวอร์ชันเสถียรล่าสุดคือ v3.6.8
หน้าแรกของ KStars
พื้นที่เก็บข้อมูล KStars Git
KStars เว็บแชท
ฟอรั่มที่มีการพูดคุยถึง KStars บ่อยครั้ง
คู่มือ KStars สามารถพบได้ในไดเร็กทอรี $(KDEDIR)/share/doc/HTML//kstars/ ของคุณ คุณยังสามารถเข้าถึงได้อย่างง่ายดายจากเมนูวิธีใช้ หรือโดยการกดปุ่ม [F1] หรือไปที่ https://docs.kde.org/?application=kstars น่าเสียดายที่มันล้าสมัยไปเล็กน้อย เรายินดีต้อนรับอาสาสมัครเพื่อช่วยปรับปรุงมัน
นอกจากนี้ยังมีไฟล์ README ดังต่อไปนี้:
README: ไฟล์นี้; ข้อมูลทั่วไป README.planetmath: คำอธิบายอัลกอริธึมที่ใช้ในการคำนวณตำแหน่งดาวเคราะห์ README.customize: ตัวเลือกการปรับแต่งขั้นสูง README.images: ข้อมูลลิขสิทธิ์สำหรับรูปภาพที่ใช้ใน KStars README.i18n: คำแนะนำสำหรับนักแปล
สามารถโคลน ดู และขอรวมรหัสได้ผ่านทางพื้นที่เก็บข้อมูล KStars หากคุณยังใหม่ต่อพื้นที่เก็บข้อมูล git ระยะไกล โปรดดูส่วนเคล็ดลับ Git ด้านล่าง หมายเหตุ: ก่อนหน้านี้ KStars ใช้ Phabricator สำหรับคำขอรวม ระบบนั้นไม่ได้ใช้งานอีกต่อไป
หากคุณวางแผนที่จะพัฒนา KStars ขอแนะนำให้ใช้ IDE คุณสามารถใช้ IDE ใดก็ได้ตามที่คุณต้องการ แต่แนะนำให้ใช้ QtCreator(https://www.qt.io/product) หรือ KDevelop(https://www.kdevelop.org) เนื่องจากเหมาะสำหรับการพัฒนา Qt/KDE มากกว่า
หากต้องการเปิด KStars ใน QtCreator ให้เลือกไฟล์ CMakeLists.txt ในโฟลเดอร์ต้นทางของ KStars จากนั้นกำหนดค่าตำแหน่งบิลด์และประเภท
แพ็คเกจข้อกำหนดเบื้องต้น
ในการสร้างและพัฒนา KStars อาจจำเป็นต้องใช้แพ็คเกจหลายแพ็คเกจจากการแจกจ่ายของคุณ นี่คือรายการ
การพึ่งพาที่จำเป็น
GNU Make, GCC -- เครื่องมือสำคัญสำหรับการสร้าง
cmake -- buildsystem ที่ใช้โดย KDE
ไลบรารี Qt > 5.12.0
กรอบงาน KDE หลายแบบ: KConfig, KDocTools, KGuiAddons, KWidgetsAddons, KNewStuff, KI18n, KInit, KIO, KXmlGui, KPlotting, KIconThemes
ไอเกน -- ห้องสมุดพีชคณิตเชิงเส้น
zlib - ไลบรารีการบีบอัด
StellarSolver -- ดู https://github.com/rlancaste/stellarsolver
การพึ่งพาเพิ่มเติม
libcfitsio -- ไลบรารี FITS
libindi - อินเทอร์เฟซแบบกระจายแบบเป็นกลางของเครื่องมือสำหรับควบคุมอุปกรณ์
เอ็กซ์เพลนเน็ต
astrometry.net
libraw
wcslib
libgsl
คิวทีพวงกุญแจ
การติดตั้งข้อกำหนดเบื้องต้น
เดเบียน/อูบุนตู
คำสั่ง apt-add-respository จำเป็นสำหรับ libstellarsolver-dev ของ apt-get หรือคุณสามารถข้าม apt-add-repository ลบ libstellarsolver-dev ออกจาก apt-get และสร้างและติดตั้ง stellarsolver จาก https://github.com/rlancaste/stellarsolver
sudo apt-add-repository ppa:mutlaqja/ppa sudo apt-get -y install build-essential cmake git libstellarsolver-dev libxisf-dev libeigen3-dev libcfitsio-dev zlib1g-dev libindi-dev extra-cmake-modules libkf5plotting-dev libqt5svg5-dev libkf5xmlgui-dev libkf5kio-dev kinit-dev libkf5newstuff-dev libkf5doctools-dev libkf5notifications-dev qtdeclarative5-dev libkf5crash-dev gettext libnova-dev libgsl-dev libraw-dev libkf5notifyconfig-dev wcslib-dev libqt5websockets5-dev xplanet xplanet-images qt5keychain-dev libsecret-1-dev breeze-icon-theme libqt5datavisualization5-dev
หมวกฟาง
yum install cfitsio-devel eigen3-devel stellarsolver-devel cmake extra-cmake-modules.noarch xisf-devel kf5-kconfig-devel kf5-kdbusaddons-devel kf5-kdoctools-devel kf5-kguiaddons-devel kf5-ki18n-devel kf5-kiconthemes-devel kf5-kinit-devel kf5-kio-devel kf5-kjobwidgets-devel kf5-knewstuff-devel kf5-kplotting-devel kf5-ktexteditor-devel kf5-kwidgetsaddons-devel kf5-kwindowsystem-devel kf5-kxmlgui-devel libindi-devel libindi-static qt5-qtdeclarative-devel qt5-qtmultimedia-devel qt5-qtdatavis3d-devel qt5-qtsvg-devel wcslib-devel xplanet zlib-devel
กำลังรวบรวม
เปิดคอนโซลและรันด้วยคำสั่งต่อไปนี้:
mkdir -p ~/Projects/build/kstars cd ~/Projects git clone https://invent.kde.org/education/kstars.git cd build/kstars cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RelWithDebInfo ~/Projects/kstars make -j16 sudo make install
หากต้องการเรียกใช้ KStars เพียงพิมพ์ kstars ในเทอร์มินัล
KStars ใช้ Artistic Style เพื่อจัดรูปแบบไฟล์ต้นฉบับ C++ ทั้งหมด โปรดตรวจสอบให้แน่ใจว่าได้ใช้กฎ astyle ต่อไปนี้กับโค้ดใด ๆ ที่ส่งไปยัง INDI บน Linux คุณสามารถสร้างไฟล์ ~/.astylerc ที่มีกฎต่อไปนี้:
--style=allman --align-reference=name --indent-switches --indent-modifiers --indent-classes --pad-oper --indent-col1-comments --lineend=linux --max-code-length=124
IDE บางตัว (เช่น QtCreator) รองรับการจัดรูปแบบโค้ดอัตโนมัติทุกครั้งที่คุณบันทึกไฟล์ลงดิสก์
บน linux ให้รันสิ่งต่อไปนี้เพื่อติดตั้งโปรแกรมที่จำเป็น:
sudo apt-get install docbook docbook-utils
แหล่งที่มาของคู่มืออยู่ใน kstars/doc คุณสามารถแก้ไขไฟล์เหล่านั้น รวมไว้ในคอมมิตและ MR ได้เหมือนกับไฟล์ c++ (ดูด้านล่าง) คุณสามารถหามาร์กอัปได้จากตัวอย่าง หรือเรียนรู้จากเอกสารออนไลน์สำหรับ docbook โดยทั่วไป อันดับแรกควรคัดลอกไดเร็กทอรี kstars/doc ทั้งหมดไปยังไดเร็กทอรีชั่วคราว จากนั้นแก้ไขและสร้างคู่มือที่นั่น เพราะหากคุณรัน meinproc ในไดเร็กทอรีต้นทางหลัก คุณจะสร้างไฟล์ .html จำนวนมากที่นั่น และคุณ ไม่ต้องการส่งไฟล์ที่สร้างขึ้นไปยังที่เก็บ git ของคุณ
cp -pr kstars/doc ~/DOCBOOK cd ~/DOCBOOK meinproc5 index.docbook
ข้างต้นควรสร้างไฟล์ html จากนั้น ในเบราว์เซอร์ คุณสามารถเปิด DOCBOOK/index.html และนำทางไปยังส่วนที่คุณต้องการ เช่น เพียงพิมพ์ข้อความที่คล้ายกับสิ่งนี้ในแถบ URL ของ Chrome: file:///home/YOUR_USER_NAME/DOCBOOK/ doc/tool-ekos.html ทำการเปลี่ยนแปลงไฟล์ .docbook บางไฟล์ใน ~/DOCBOOK/*.docbook สร้างไฟล์ html ใหม่ และดูการเปลี่ยนแปลงของคุณในเบราว์เซอร์เหมือนเมื่อก่อน ย้ำ.
หากต้องการตรวจสอบไวยากรณ์ คุณอาจต้องการเรียกใช้:
checkXML5 index.docbook
เมื่อคุณพอใจแล้ว ให้คัดลอกไฟล์ที่แก้ไขแล้วกลับไปที่ kstars/doc และปฏิบัติต่อไฟล์ที่แก้ไข/ใหม่ตามปกติด้วยคอมไพล์ รวมถึงไฟล์ที่แก้ไขของคุณในคอมมิตใหม่และในท้ายที่สุดจะเป็นคำขอรวมใหม่
ดูหัวข้อเคล็ดลับ Git ด้านล่างเกี่ยวกับข้อมูลเฉพาะทางเทคนิคของวิธีสร้างคำขอรวม ในขั้นตอนการยื่นคำขอ คุณจะต้องอธิบายคำขอ โปรดใช้รูปแบบที่คล้ายกับรูปแบบนี้ ซึ่งมีส่วนในการสรุปสิ่งที่ทำไปแล้ว สิ่งที่แก้ไขในแต่ละไฟล์ หมายเหตุอื่นๆ ที่เกี่ยวข้อง และวิธีการทดสอบการเปลี่ยนแปลงของคุณ
คุณต้องคุ้นเคยกับคอมไพล์จึงจะเปลี่ยนแปลง KStars ได้ และนี่ไม่ใช่ที่สำหรับบทช่วยสอนดังกล่าว มีแหล่งข้อมูลที่ดีเยี่ยมมากมายบนเว็บ อย่างไรก็ตาม ย่อหน้าด้านล่างนี้จะให้ภาพรวมของวิธีหนึ่งในการสร้าง Merge Request เนื่องจากคุณมีประสบการณ์คอมไพล์เพียงพอแล้วในการโคลน KStars สร้างสาขาในพื้นที่ แก้ไขโค้ดตามที่คุณต้องการ ยอมรับการเปลี่ยนแปลงของคุณกับสาขาในพื้นที่ของคุณ และทดสอบโค้ดของคุณอย่างละเอียด
นี่เป็นแหล่งข้อมูลที่ดีสำหรับ fork-branch-git-workflow เพื่อทำการเปลี่ยนแปลง KStars ขั้นตอนด้านล่างได้รับแรงบันดาลใจจากหน้านั้น
การตั้งค่าสภาพแวดล้อมคอมไพล์ KStars เพียงครั้งเดียว
สร้างเอกลักษณ์ให้กับ KDE ของคุณ
เข้าสู่ระบบ ไปที่หน้า gitlab ของ KStars และเข้าสู่ระบบที่มุมขวาบน
แยกโครงการ จากนั้น ยังคงอยู่ในหน้า gitlab ของ KStars คลิก FORK ที่มุมขวาบน เพื่อสร้างทางแยกของโครงการของคุณเอง
คัดลอก URL ของคุณ สังเกต URL ของส้อมของคุณ ควรเป็นhttps://invent.kde.org/YOUR_KDE_NAME/kstars
โคลน KStars กลับมาที่คอมพิวเตอร์ของคุณให้รันคำสั่งเหล่านี้
mkdir -p ~/Projects
ซีดี ~/Projects
โคลนคอมไพล์ https://invent.kde.org/YOUR_KDE_NAME/kstars
ซีดี kstars
เพิ่มต้นน้ำของคุณ เพิ่ม repo หลัก KStars ไปยัง repo ที่แยกของคุณ
git ระยะไกลเพิ่มอัปสตรีม https://invent.kde.org/education/kstars
ตอนนี้คุณพร้อมแล้ว
ขั้นตอนที่ใช้สำหรับการเปลี่ยนแปลงแต่ละครั้ง หลังจากการตั้งค่าครั้งเดียว (ด้านบน) สามารถใช้ขั้นตอนด้านล่างสำหรับการส่งฟีเจอร์ใหม่แต่ละครั้งได้ โดยสรุป คุณจะสร้างฟีเจอร์แบรนช์ในพื้นที่เก็บข้อมูลในเครื่องของคุณ ทำการเปลี่ยนแปลงที่คุณต้องการที่นั่นและทดสอบ พุชไปที่ fork สร้างคำขอเพื่อรวม fork ของคุณเข้ากับ repo KStars หลัก รอคำติชม และอาจทำซ้ำใน การเปลี่ยนแปลงโดยหวังว่าจะได้รับอนุมัติจากหน่วยงานราชการ
สร้างสาขาคุณลักษณะของคุณ
git ชำระเงิน -b YOUR_BRANCH_NAME
ทำการเปลี่ยนแปลงของคุณ
ยอมรับการเปลี่ยนแปลงของคุณ
คอมไพล์กระทำ -a
พุชการเปลี่ยนแปลงไปยัง repo ที่แยกของคุณ
git push ต้นกำเนิด YOUR_BRANCH_NAME
สร้างคำขอรวม
ใช้เบราว์เซอร์ของคุณเพื่อเยี่ยมชม repo ของคุณที่ https://invent.kde.org/YOUR_KDE_NAME/kstars
คุณควรเห็นตัวเลือกในการสร้างคำขอรวมสำหรับ YOUR_BRANCH_NAME กรอกรายละเอียด (ดูส่วนด้านบน)
คุณควรจะเห็น URL ใหม่สำหรับคำขอรวมนั้นโดยเฉพาะ
ทำการเปลี่ยนแปลงบางอย่าง คุณอาจได้รับคำขอให้แก้ไขโค้ดบางส่วนของคุณ
หากเป็นเช่นนั้น คุณเพียงแค่กลับไปที่สาขาในพื้นที่ของคุณ ทำและทดสอบการเปลี่ยนแปลงของคุณ
ยืนยันการเปลี่ยนแปลงตามด้านบนภายในสาขาของคุณด้วย: git commit -a
พุชการเปลี่ยนแปลงของสาขาของคุณไปยัง repo ที่แยกออกมาดังข้างบนด้วย: git push origin YOUR_BRANCH_NAME
การเปลี่ยนแปลงของคุณควรถูกเพิ่มลงในคำขอรวมของคุณโดยอัตโนมัติ ตรวจสอบหน้าคำขอรวมเพื่อให้แน่ใจ
คุณอาจต้องรีบูตโค้ดของคุณ - ดูรายละเอียดด้านล่าง
กำลังรีบูตการเปลี่ยนแปลงของคุณ ผู้อื่นอาจทำการเปลี่ยนแปลง KStars ในเวลาเดียวกันกับที่คุณกำลังพัฒนาฟีเจอร์ของคุณ Rebaseing กำลังอัปเดตเวอร์ชันของ KStars และการเปลี่ยนแปลงเฉพาะของคุณเพื่อให้เหมือนกับว่าคุณเปลี่ยนเวอร์ชัน KStars ล่าสุด เช่น สะท้อนถึงการเปลี่ยนแปลงใน codebase ที่เกิดขึ้นหลังจากที่คุณโคลนหรืออัปเดตสำเนา KStars ของคุณเอง นี่เป็นหัวข้อสำคัญที่คุณสามารถ Google ได้ แต่คำแนะนำต่อไปนี้ใช้ได้ผลเกือบตลอดเวลา
โปรดทราบว่าการดำเนินการนี้จะดำเนินการก่อนที่คุณจะสร้างคำขอรวม เมื่อคุณเป็นคนเดียวที่เห็นการเปลี่ยนแปลงโค้ดของคุณ เมื่อคุณเริ่มคำขอรวมแล้ว รหัสของคุณจะเป็น "สาธารณะ" และแทนที่จะรีบูต คุณควรปฏิบัติตามขั้นตอนการรวมด้านล่าง
cd ~/Projects/kstars git checkout master git pull upstream master # Get the master from the main KStars repo onto your local clone git push origin master # Then push your updated local clone into your forked repo git checkout YOUR_BRANCH_NAME git rebase master git push origin YOUR_BRANCH_NAME -f
หากมีปัญหาในการรีบูต คอมไพล์จะให้คำแนะนำในการแก้ไขปัญหา
การรวมการเปลี่ยนแปลงของผู้อื่น เมื่อคุณส่งคำขอรวม ผู้อื่นจะมองเห็น (และแก้ไข) รหัสของคุณ ณ จุดนี้ แม้ว่าคุณยังอาจจำเป็นต้องอัปเดตเป็นเวอร์ชัน KStars ล่าสุด แต่การรีบูตจะทำลายข้อมูลการเปลี่ยนแปลงและสามารถเขียนทับสิ่งที่ผู้อื่นกำลังทำอยู่ได้ วิธีที่ดีที่สุดคือ 'รวม' KStars เวอร์ชันปัจจุบันเข้ากับโค้ดของคุณ
cd ~/Projects/kstars git checkout master git pull upstream master # Get the master from the main KStars repo onto your local clone git push origin master # Then push your updated local clone into your forked repo git checkout YOUR_BRANCH_NAME git merge master git push origin YOUR_BRANCH_NAME
ความแตกต่างจากส่วนการรีบูตคือ 2 คำสั่งสุดท้าย: มีการใช้ 'git merge master' แทน 'git rebase master' นอกจากนี้ 'git push' ไม่ได้ใช้ตัวเลือก -f ครั้งแรกที่คุณเรียกใช้ 'git push' คอมไพล์อาจถามคุณให้เพิ่ม 'set-upstream origin' ให้กับคำสั่ง ในกรณีนั้น ให้ปฏิบัติตามคำแนะนำเหล่านั้น
หากคุณทำตามขั้นตอนนี้ คุณจะพบ 'merge commit' ใหม่ที่ถูกเพิ่มลงในบันทึก git ของสาขาของคุณ
การเปลี่ยนแปลงครั้งต่อไปของคุณ เมื่อคำขอรวมของคุณเสร็จสมบูรณ์ (และอาจรวมเข้ากับ KStars) คุณอาจต้องการดำเนินการต่อและพัฒนาอีกครั้ง การเปลี่ยนแปลงครั้งถัดไปจะใช้สาขาฟีเจอร์อื่น (ใหม่) และสาขาฟีเจอร์แรกสามารถลบได้ คุณอาจต้องการดำเนินการต่อไปนี้เป็นประจำเพื่อให้สาขาหลักของคุณอัปเดตด้วย KStars
cd ~/Projects/kstars git checkout master git pull upstream master # Get the master from the main KStars repo onto your local clone git push origin master # Then push your updated local clone into your forked repo
การทดสอบจะถูกจัดเก็บไว้ในโฟลเดอร์ Tests
และใช้ QTest เป็นกรอบงานสนับสนุน:
การทดสอบแบบรวมสามารถพบได้ใน auxiliary
, capture
, fitsviewer
ฯลฯ โดยพยายามตรวจสอบพฤติกรรมของชุดคลาสขั้นต่ำสุด และรองรับการพัฒนาฟีเจอร์
การทดสอบ UI สามารถพบได้ใน kstars_lite_ui
และ kstars_ui
พวกเขาดำเนินการกรณีการใช้งานเช่นเดียวกับที่ผู้ใช้จะทำจากอินเทอร์เฟซผู้ใช้ และมุ่งเน้นไปที่ความพร้อมของการตอบรับด้วยภาพและความเสถียรของขั้นตอน
ตัดสินใจว่าการทดสอบรวมใหม่ของคุณจะอยู่ที่ใดใน Tests
คลาส KStars ควรอยู่ในโฟลเดอร์ที่ตรงกับที่มา: ตัวอย่างเช่น การทดสอบคลาสเสริมอยู่ใน auxiliary
ค้นหาสถานที่ที่เหมาะสมสำหรับการทดสอบของคุณ โดยพิจารณาจากส่วนของระบบที่กำลังทดสอบ ตามตัวอย่าง โฟลเดอร์ชื่อ thatkstarscategory
สร้างคลาสการทดสอบแบบรวมใหม่ หรือคัดลอกวางการทดสอบแบบรวมที่มีอยู่ไปยังคลาสใหม่ ตรวจสอบ Tests/kstars_ui_tests/kstars_ui_tests.h
เป็นตัวอย่าง ตั้งชื่อไฟล์ .h
และ .cpp
เป็น "test[lowercase kstars class]" (เช่น "testthatkstarsclass") และอัปเดตให้ตรงกับรายการต่อไปนี้:
/* [Author+Licence header] */ #ifndef TESTTHATKSTARSCLASS_H #define TESTTHATKSTARSCLASS_H #include <QtTest> #include <QObject> class TestThatKStarsClass: public QObject { Q_OBJECT public: explicit TestThatKStarsClass(QObject *parent = null); private slots: void initTestCase(); // Will trigger once at beginning void cleanupTestCase(); // Will trigger once at end void init(); // Will trigger before each test void cleanup(); // Will trigger after each test void testThisParticularFunction_data(); // Data fixtures for the test function (Qt 5.9+) void testThisParticularFunction(); // Test function } #endif // TESTTHATKSTARSCLASS_H
/* [Author+Licence header] */ #include "testthatkstarsclass.h" TestThatKStarsClass::TestThatKStarsClass(QObject* parent): QObject(parent) {} TestThatKStarsClass::initTestCase() {} TestThatKStarsClass::cleanupTestCase() {} TestThatKStarsClass::init() {} TestThatKStarsClass::cleanup() {} TestThatKStarsClass::testThisParticularFunction_data() { // If needed, add data fixtures with QTest::AddColumn/QTest::AddRow, each will trigger testThisParticularFunction } TestThatKStarsClass::testThisParticularFunction() { // Write your tests here, eventually using QFETCH to retrieve the current data fixture } QTEST_GUILESS_MAIN(TestThatKStarsClass);
คุณสามารถใช้ไฟล์เดียวเพื่อเก็บทั้งการประกาศและคำจำกัดความ แต่คุณจะต้อง #include "testthatkstarsclass.moc"
ระหว่างการประกาศและคำจำกัดความ
อัปเดตการกำหนดค่า CMake เพื่อเพิ่มการทดสอบของคุณ หากคุณสร้างโฟลเดอร์ใหม่ ให้สร้าง CMakeLists.txt
ใหม่เพื่อเพิ่มการทดสอบของคุณ:
ADD_EXECUTABLE( testthatkstarsclass testthatkstarsclass.cpp ) TARGET_LINK_LIBRARIES( testthatkstarsclass ${TEST_LIBRARIES}) ADD_TEST( NAME ThatKStarsClassTest COMMAND testthatkstarsclass )
ให้ CMakeLists.txt
ที่อยู่ในหนึ่งโฟลเดอร์ที่สูงกว่าในระบบไฟล์รวม CMakeLists.txt
ด้วยการเพิ่ม:
include_directories( ... ${kstars_SOURCE_DIR}/kstars/path/to/the/folder/of/the/kstars/class/you/are/testing ) ... add_subdirectory(thatkstarscategory)
ตรวจสอบให้แน่ใจว่าคุณเพิ่ม add_subdirectory
ในกลุ่มการขึ้นต่อกันที่ถูกต้อง การทดสอบ Ekos ต้องใช้ INDI_FOUND
เป็นต้น
เขียนแบบทดสอบของคุณ ตรวจสอบให้แน่ใจว่าคุณบันทึกพฤติกรรมพร้อมกับแบบทดสอบของคุณ หากคุณพบข้อบกพร่อง อย่าแก้ไข ทำเครื่องหมายด้วยมาโคร QEXPECT_FAIL
การทดสอบจะบันทึกพฤติกรรมที่ไม่ถูกต้องในขณะที่จุดบกพร่องยังมีอยู่ และจะล้มเหลวเมื่อจุดบกพร่องได้รับการแก้ไข หลังจากนั้นเท่านั้นจึงจะสามารถอัปเดตการทดสอบได้ ให้ความสนใจกับการสนับสนุนเวอร์ชันไลบรารี Qt ด้วย ตัวอย่างเช่น การติดตั้งข้อมูลต้องใช้ Qt 5.9+
ทำตามขั้นตอนเดียวกันกับการทดสอบแบบรวม แต่ค้นหาคลาสการทดสอบของคุณใน kstars_ui_tests
สิ่งสำคัญอย่างหนึ่งเกี่ยวกับการทดสอบ UI คือพวกเขาทั้งหมดต้องใช้ QStandardPaths::setTestModeEnabled(true)
เพื่อให้ดำเนินการด้วยการกำหนดค่าผู้ใช้แยกต่างหากซึ่งว่างเปล่าในตอนแรก การทดสอบอินเทอร์เฟซผู้ใช้จึงจำเป็นต้องมีการตั้งค่าเบื้องต้นเพื่อให้ทำงานได้อย่างถูกต้อง เช่น การใช้วิซาร์ดการกำหนดค่าใหม่ หรือการตั้งค่าตำแหน่งทางภูมิศาสตร์ ด้วยเหตุนี้ คุณจึงต้องเพิ่มการดำเนินการทดสอบของคุณใน Tests/kstars_ui_tests/kstars_ui_tests.cpp
ใน main()
หลังจาก การดำเนินการ TestKStarsStartup
สิ่งสำคัญประการที่สองเกี่ยวกับ QTest โดยทั่วไปก็คือ ฟังก์ชันการทดสอบไม่มีโค้ดส่งคืน ดังนั้นจึงจำเป็นต้องเขียนมาโครเพื่อแยกตัวประกอบโค้ดที่ซ้ำกัน คุณจะพบมาโครที่มีอยู่จำนวนมากในไฟล์ส่วนหัวของคลาสการทดสอบ kstars_ui_tests
เพื่อดึงข้อมูลโปรแกรมเบ็ดเตล็ด คลิกปุ่ม หรือเติมวิดเจ็ต QComboBox
...
สิ่งสำคัญประการที่สามเกี่ยวกับอินเทอร์เฟซ KStars คือการผสมผสานองค์ประกอบ KDE และ Qt UI ดังนั้น บางครั้งการทดสอบจำเป็นต้องย้ายรหัสยืนยันไปยังการโทร QTimer::singleShot
และบางครั้งแม้แต่การคลิกที่ปุ่มก็ต้องทำให้ไม่พร้อมกันเพื่อให้การทดสอบยังคงอยู่ในการควบคุม (กล่องโต้ตอบโมดอล) โชคดีที่การแฮ็กเหล่านี้ไม่ได้เปลี่ยนแปลงการทำงานของโค้ดที่ทดสอบ
เมื่อทำการทดสอบ คุณต้องแน่ใจว่าคุณใช้องค์ประกอบที่ผู้ใช้สามารถใช้ได้เสมอ แน่นอนว่า หากการทดสอบต้องมีการตั้งค่าที่ไม่ได้เป็นส่วนหนึ่งของการโทรที่น่าสนใจ คุณอาจแฮ็กการโทรโดยตรงได้ ตัวอย่างเช่น การทดสอบ Ekos บางอย่างที่กำหนดให้ Telescope Simulator ชี้ไปที่ตำแหน่งเฉพาะ ให้ใช้ QVERIFY(Ekos::Manager::Instance()->mountModule()->sync(ra,dec))
โปรดจำไว้ว่าบางครั้งคุณต้องเผื่อเวลาไว้เพื่อให้สัญญาณอะซิงโครนัสถูกปล่อยออกมาและจับได้
เจสัน แฮร์ริส [email protected]
Jasem Mutlaq [email protected]
อาคารัค ซิมฮา [email protected]
อเล็กเซย์ คุดยาคอฟ [email protected]
อาร์เทม เฟโดสกิน [email protected]
คาร์สเทน นีเฮาส์ [email protected]
คริส โรว์แลนด์ [email protected]
ซีซาบา เคอร์เทสซ์ [email protected]
เอริค เดจูฮาเน็ต [email protected]
แฮร์รี เดอ วาเลนซ์ [email protected]
ไฮโกะ เอเวอร์มันน์ [email protected]
สวัสดี Murveit [email protected]
เจมส์ โบว์ลิน [email protected]
เจโรม ซอนริเยร์ [email protected]
จอห์น อีแวนส์ [email protected]
โจเซฟ แมคกี [email protected]
มาร์ค ฮอลโลมอน [email protected]
มาร์ติน พิสเกอร์นิก [email protected]
เมเดริก โบเกียง [email protected]
ปาโบล เด วิเซนเต้ [email protected]
ปรากาช โมฮัน [email protected]
ราฟาล คูวากา [email protected]
ริชาบ อาโรรา [email protected]
โรเบิร์ต แลงคาสเตอร์ [email protected]
ซามิกชาน ไบรักยา [email protected]
โธมัส คาเบลมันน์ [email protected]
วาเลนติน บอตต์เชอร์ [email protected]
วิกเตอร์ คาร์บูน [email protected]
วินเซนต์ จาโกต์ [email protected]
โวล์ฟกัง ไรส์เซนแบร์เกอร์ [email protected]
ยูริ ชรน้อยวัน [email protected]
ข้อมูลแค็ตตาล็อกส่วนใหญ่มาจากศูนย์ข้อมูลดาราศาสตร์ที่ดำเนินการโดย NASA เว็บไซต์คือ: http://adc.gsfc.nasa.gov/
ข้อมูล NGC/IC รวบรวมโดย Christian Dersch จากฐานข้อมูล OpenNGC https://github.com/mattiaverga/OpenNGC (ใบอนุญาต CC-BY-SA-4.0)
ข้อมูลซูเปอร์โนวามาจากโครงการ Open Supernova Catalog ที่ https://sne.space โปรดดูเอกสารเผยแพร่ที่นี่: http://adsabs.harvard.edu/abs/2016arXiv160501054G
KStars เชื่อมโยงไปยังคอลเลกชันรูปภาพที่ยอดเยี่ยมและหน้า HTML ที่รวบรวมโดย Students for the Exploration and Development of Space ที่: http://www.seds.org
KStars เชื่อมโยงไปยังรูปภาพ Digitized Sky Survey ออนไลน์ ซึ่งคุณสามารถค้นหาได้ที่: http://archive.stsci.edu/cgi-bin/dss_form
KStars ลิงก์ไปยังรูปภาพจากโครงการ HST Heritage และจากข่าวประชาสัมพันธ์ HST: http://heritage.stsci.edu http://oposite.stsci.edu/pubinfo/pr.html
KStars เชื่อมโยงไปยังภาพจากโครงการ Advanced Observer ที่หอดูดาวแห่งชาติ Kitt Peak หากคุณสนใจในการถ่ายภาพดาราศาสตร์ ลองเข้าไปดูโปรแกรมของพวกเขา: http://www.noao.edu/outreach/aop/
เครดิตของแต่ละภาพที่ใช้ในโปรแกรมแสดงอยู่ใน README.images
KStars เป็นงานแห่งความรัก มันเริ่มต้นจากงานอดิเรกส่วนตัวของฉัน แต่ไม่นานหลังจากที่ฉันโพสต์โค้ดบน Sourceforge ครั้งแรก มันก็เริ่มดึงดูดนักพัฒนาคนอื่นๆ ฉันแค่ประทับใจและพอใจอย่างยิ่งกับนักพัฒนาร่วมของฉัน ฉันไม่สามารถขอลูกเรือที่มีความสามารถและเป็นมิตรได้มากกว่านี้อีกแล้ว ดำเนินไปโดยไม่ได้บอกว่า KStars จะไม่มีที่ไหนเลยใกล้เคียงกับที่เป็นอยู่ทุกวันนี้หากปราศจากความพยายามของพวกเขา เราได้ร่วมกันสร้างสิ่งที่เราทุกคนภาคภูมิใจ
เราใช้ (หลัก) หนังสือสองเล่มเป็นแนวทางในการเขียนอัลกอริทึมที่ใช้ใน KStars:
"ดาราศาสตร์เชิงปฏิบัติด้วยเครื่องคิดเลขของคุณ" โดย Peter Duffett-Smith
"อัลกอริทึมทางดาราศาสตร์" โดย Jean Meeus
ขอขอบคุณนักพัฒนา Qt และ KDE ที่มี API ที่ไม่มีใครเทียบได้ที่ทำให้ KStars เป็นไปได้ ขอขอบคุณสำหรับความพยายามอย่างไม่เหน็ดเหนื่อยของทีมแปลของ KDE ซึ่งนำ KStars ไปสู่ผู้ฟังทั่วโลก
ขอขอบคุณทุกคนที่กระดานข้อความ KDevelop และบน irc.kde.org สำหรับการตอบคำถามที่พบบ่อยของฉัน
ขอขอบคุณผู้ใช้จำนวนมากที่ได้ส่งรายงานข้อบกพร่องหรือข้อเสนอแนะอื่นๆ
คุณยังอ่านเรื่องนี้อยู่เหรอ? :) ก็ประมาณนั้นแหละ ฉันหวังว่าคุณจะสนุกกับ KStars!
เจสัน แฮร์ริส [email protected]
รายชื่อผู้รับจดหมายของ KStars Development [email protected]
ส่งความคิดและข้อเสนอแนะถึงเรา!