2023.1219.2232
December 19, 2023
"in LandScape mode, inputResultLabel, Position of Cursor BugFixed" and "Stoped PyFinalizeEx(()" Version; (1) In LandScape mode, at the InputLabel, position of Cursor was Wrong, we Fixed the Bug at this time. (2)we Stopped PyFinalizeEx() 'cause PyFinalizeEx() doesNot Work Well, for example, in some of situations, some of Apps which use Thread in the LandScape mode will CRASH when it executes PyFinalizeEx(). ****Ezekiel 34:3-6, GNT; 34:3 You drink the milk, wear clothes made from the wool, and kill and eat the finest sheep. But you never tend the sheep. 34:4 You have not taken care of the weak ones, healed the ones that are sick, bandaged the ones that are hurt, brought back the ones that wandered off, or looked for the ones that were lost. Instead, you treated them cruelly. 34:5 Because the sheep had no shepherd, they were scattered, and wild animals killed and ate them. 34:6 So my sheep wandered over the high hills and the mountains. They were scattered over the face of the earth, and no one looked for them or tried to find them. Even if you live in the evil country which Evil Emperor rules, You MustNot Lose the Hope that King Jesus comes. --Yassun
More2023.1217.2217
December 18, 2023
"pjBlueTooth" Version; Now You Can Communicate with "pjBlueTooth" on PeterJohn. We Added "pjBlueTooth" module and "pjBlueToothClass" at this time in order to use Apple's CoreBlueTooth on PeterJohn. ****1of2; pjBlueTooth; This is a Basic Module to use Apple's CoreBlueTooth on PeterJohn. bindOpponentDeviceNamesUpdated() bindPeripheralMgrDidReceiveWrite() init() selectOpponentDeviceByUUID() sendMsgStr() cleanUp() ****2of2; pjBlueToothClass.py This is a Basic Class to use "pjBlueTooth" Module on PeterJohn. blueToothInit(self) opponentDeviceNamesUpdated(self, opponentDeviceNamesCsvStr) keyPress(self, eventKeySym) peripheralMgrDidReceiveWrite(self, msgStr) afterConnected(self) clickFirst(self, eventNum) ****TutorialSeason001/scripts/s08pjBlueTooth.py; This is the First Example to Show How to Use both "pjBlueTooth" module and "pjBlueToothClass". ****Ezekiel 36:25-29, GNT; 36:25 I will sprinkle clean water on you and make you clean from all your idols and everything else that has defiled you. 36:26 I will give you a new heart and a new mind. I will take away your stubborn heart of stone and give you an obedient heart. 36:27 I will put my Spirit in you and will see to it that you follow my laws and keep all the commands I have given you. 36:28 Then you will live in the land I gave your ancestors. You will be my people, and I will be your God. 36:29 I will save you from everything that defiles you. I will command the grain to be plentiful, so that you will Not have any more famines. 36:30 I will increase the yield of your fruit trees and your fields, so that there will be No more famines to disgrace you among the nations. Go Forward along the Path which Holy Spirit Showed You. --Yassun
More2022.1126.2048PM
November 27, 2022
"sqLite3" modelViewController Tutorial Arranged Version; In the previous version, you became Able to Use "sqLite3" on PeterJohnV4. we Arranged the "TutorialSeason004" which is Created to Learn about the Concept of ModelViewController. #sqLite3 #modelViewController #NormalizedTable ****What we Offer you at this time. **TutorialSeason004/scripts/s001modelViewController.py;; This is the Same as the previous version. the Data Model has the Horizontal Structure and it is Shown as the Horizontal View. but "UnNormalized Tables" are Inferior in ExtenSibiLity. **TutorialSeason004/scripts/s002normalizedEqDetailMVC.py;; "Normalized Tables" are Superior in ExtenSibiLity. This Shows Even if the table was Normalized, and Even if the table structure was Changed from Horizontal to Vertical, you Can Get the Same Horizontal View. It means that we Can Separate the Structure of Data Model from the Structure of View. This is the Concept of "Model-View-Controller". we Arranged the sourceCode just a little from the previous version in order to make easier to Connect to the Next. **TutorialSeason004/scripts/s003eqDetailKeyMVC.py;; we Added this at this time. Now "normalizedEqDetail" table doesNot have "key" column, instead of it, it Has "keyCode" column. Best Regards, --Yasushi Yassun Obata
More2022.1122.0035AM
November 22, 2022
" PIL ( Python Imaging Library ) " and " SqLite3 " Available Version; ****What we Offer you at This Time;; **1of4; TutorialSeason004/scripts/s005PILtest.py;; PIL stands for Python Imaging Library. Now You Can Use PIL on PeterJohnV4. PIL is installed as "Pillow" Package but is imported as "PIL". CAUTION: But "PIL.Image.show()" doesNot Work. So we Used "pjTkInter.createSprite()" in order to Show the Destination Image which was Created by "PIL.image.save()". **2of4; ImageFile as the Picture;; In " Images/->imagesWindow->Each ImageFile";; Now You Can See ImageFile as the Picture Not Only Image FileName. **3of4; TutorialSeason003/scripts/s004NumPyReplacementTest.py;; We Added "pjNumPyReplacement.py". it is a SubSet of NumPy and Written in PurePython3. **4of4; And One More Thing;; SqLite3 is a Buitin Module in Python3. and Kivy-iOS is a Python3 Interpeter but Kivy-iOS CanNot import SqLite3. So we Wrote PCE( Python C Extensiton ) code which uses PyImport_AppendInittab(). Now You Can Use "SqLite3" on PeterJohnV4. and Now You Can See some of Examples which Show How to Use SqLite3 on PeterV4 As Follows. TutorialSeason004/scripts/s001modelViewController.py and TutorialSeason004/scripts/s002modelViewController.py;; 's001modelViewController.py' uses 'UnNormalized Tables'. 'UnNormalized Tables' are Inferior in the Extensibility. It Needs to 'Add Columns' When it Needs to Add Some of Detail Informations. 's002modelViewController.py' uses 'Normalized Tables'. 'Normalized Tables' are Superior in the Extensibility. It has Only to 'Insert Rows' When it Needs to Add Some of Detail Informations. In these Two python3 script, the python3 scripts work as the Controller bet the Model and the View. Even these Small Examples, it Shows that the Model Needs to be Separated from the View. Even if the View is supposed to be Showed Horizontally, the Model Needs to be "Normalized" as the "Normalized Tables". ****What we Modified at This Time;; **1of2; TutorialSeason001/scripts/s00stdErrTest.py;; Now You Can See Error Message at "Run Script" Window. **2of2; pjCommandLineTools/scripts/s00python3.py;; Now You Can See Error Message at "Run Script" Window. For Example, if you Entered "1+[Enter]", it Shows "Syntax Error" at "Run Script" Window. ****What Bugs we Fixed at this time;; **1of1; First time Running Failed Bug;; When you Run any Script at the First time After Installed "PeterJohnV4" App, it Failed to Run the Script So Far. it Needed to ReStart "PeterJohnV4" App in order to Run any Script. After Second time Running, it has worked Well. we Fixed this Bug at this time. So you Can Run any Script Even at the First time After Installed "PeterJohnV4" App. ****What we Changed at this time. **1of3; CPython Interpreter;; we Changed CPython Interpreter from "Python-Apple-Support Version" by BeeWare to "Kivy-iOS Version". **2of3; AVAudioUnitSampler;; Now we Use AVAudioUnitSampler Directly to implement MIDI function. So Once we Removed AudioKit. But "AudioKit CookBook" is Awesome Library, For Example, "Tuner" is Awesome. So in the Future Release, we Might Use AudioKit Again. **3of3; MIDI instrument file;; we Changed MIDI instrument file from "nes-syn1.EXS" to a 'SF2' format file. 'cause "EXS" format has the Absolute File Path to the WAV file when someone created the "EXS" file, and it Causes "load Instrument Error". So we Changed to the 'SF2' format file. Best Regards, --Yasushi Yassun Obata
More2022.1022.1819PM
October 22, 2022
API ReFactoring Version; ****What we Offer you at this time. ****About New APIs; we Added Three APIs, which specify image file or audio file using the AbsolutePath, 'cause Now we Can know the AbsolutePath of image file or audio file, using logStdEntry.bundleAppPath and logStdEntry.sandBoxProjDirPath. **tutorialSeason001/s06spriteSandBox.py 1of5; pjTkInter.createSprite() **tutorialSeason001/s07audioSandBox.py 2of5; pjSound.playSoundEffects() 3of5; pjSound.prepareBgm() Also you can see the example of pjSound.playSoundEffects() in the tutorial below. **tutorialSeason002/s007tellMeAt.py ****And Two More Things;; we Added Two More APIs. **tutorialSeason002/s001calc.py;; When you'd like to set the position of PlotView to Top, Before showing PlotView, please set the position of PlotView to Top. In default setting, plotView is Set to Bottom. 4of5; pjPlot.setPlotViewToTop() 5of5; pjPlot.setPlotViewToBottom() ****Removed APIs; we Removed Six of Old APIs below. 1of6; pjTkInter.createSpriteBundle() 2of6; pjTkInter.createSpriteSandBox() 3of6; pjSound.playSoundEffectsBundle() 4of6; pjSound.playSoundEffectsSandBox() 5of6; pjSound.prepareBgmBundle() 6of6; pjSound.prepareBgmSandBox() ****Removed Tutorials; we Removed Two of tutorials 'cause Bundle Files are Fixed Only When submitting App to iPhone AppStore, and you CanNot Add Any Files to the Bundle Files. **tutorialSeason001/s06spriteBundle.py **tutorialSeason001/s07audioBundle.py Best Regards, --Yasushi Yassun Obata
More2022.1001.0143AM
October 2, 2022
some of BugFixes Version;; ****What we Offered you at this time;; **1of6; TutorialSeason002/scripts/pjMidiKeyboardClass.py;; we corrected the line "pj.updateMainLabel()" to "tk.updateMainLabel()". 'cause the "updateMainLabel()" function moved from "pj" module to "tk" module in the Previous Version. **2of6; TutorialSeason002/scripts/s002midiKeyboard.py;; we Corrected the Explanation Sentence, which is shown by the "tk.updateMainLabel()" function, from "pj.createRectangle() and pj.bindMotionCanvasFunction()" to "tk.createRectangle() and tk.bindMotionCanvasFunction()". 'cause both "createRectangle()" function and "bindMotionCanvasFunction()" moved from "pj" module to "tk" module in the Previous Version. **3of6; TutorialSeason002/scripts/s003startTcpServerTest.py;; in the "afterConnected(self)" method, the UnExpected and Extra thread "Thread-2" occured. so we Removed it by joining the thread "Thread-2". We don't understand the reason why the "Thread-2" Occurs But we Need to Proceed. This is the "Symptomatic Threapy". **4of6; TutorialSeason002/scripts/pjInputRequestClientThreadBaseClass.py;; in the "afterConnected(self)" method, the UnExpected and Extra thread "Thread-1" occured. so we Removed it by joining the thread "Thread-1". We don't understand the reason why the "Thread-1" Occurs But we Need to Proceed. This is the "Symptomatic Threapy". **5of6; TutorialSeason002/scripts/s006pipInstallTest.py;; we Added "truncateOutFilePath()" function and modified "displayPipListResult()" function. This was Not a Bug But it needed to list some of packages more Beautifully. **6of6; pjCommandLineTools/scripts/s001python3.py;; we added the line "import traceback" Before the "printException()" function. 'cause the "printException()" function uses "traceback.format_exc()" function. Best Regards, --Yasushi Yassun Obata
More2022.0930.0327AM
September 29, 2022
"python3.py" and "pip.py" Added Version;; ****What we Offer you at this time;; **1of5;pjCommandLineTools/scripts/s001python3.py;; Now You Can Use "PeterJohn V4" as the Command Line Version of Python3. iPhone doesn't provide "Terminal.app" like the MacOS, so "python3.py" is implemented as a Python3 Script. **2of5;pjCommandLineTools/scripts/s002pip.py;; Now You Can Use "PeterJohn V4" as the Command Line Version of Pip3. iPhone doesn't provide "Terminal.app" like the MacOS, so "pip.py" is implemented as a Python3 Script. Now it supports Three Options Below. pip install pkgName pip uninstall pkgName pip list and One More Thing, pip listPkg pkgName 'cause there are Only Nine Lines to list some of packages. **3of5;we Separated "pj" module to the three modules of "pj", "pjTkInter" and "pjSound". This makes Easier to port "TkInter" and "WinSound" App from the Other OS to iOS. Or to port "pjTkInter" and "pjSound" App from iOS to the Other OS. **4of5;we Arranged ScriptsView where you select a Script from the list of scripts, to the three parts of "mainContents", "pjClases" and "logFiles". This makes Easier for you to Edit and Run the pyhon3 scripts in the "mainContents". **5of5;we Added "Command Line History" function to English Keyboard. This helps you to enter Command, for example, on "python3.py" script or "pip.py" script or to Calculate using "Calc.py" script. ControlP-show Previous command in the History. ControlN-show Next command in the History. ControlA-Move Cursor to Head ControlE-Move Cursor to Tail ControlF-Move Cursor Forward ControlB-Move Cursor Backward That's All. Best Regards, --Yasushi Yassun Obata
More2022.0914.0306AM
September 13, 2022
"SecondTime BuiltIn Input Function Failure" BugFix Version;; In "tutorialSeason002/s001calc.py", We found a Bug. For example, if you executed, >>>s=input('?')[Enter] ?monty[Enter] >>>s[Enter] returns monty. >>>t=input('?')[Enter] ?monday[Enter] >>>t[Enter] didn't return monday though it needs to return monday. So We Added "sys.stdin.seek(0, os.SEEK_SET)" as the Solution. This's the important BugFix for the Users who use Buitlin Input Function.
More2022.0911.2114PM
September 12, 2022
'Deep Learning' Colorizes Version;; ****What we Offer you at this time;; **tutorialSeason003/s003DeepLearningColorizes.py;; 'Deep Learning' enables Machine to Colorize some of Black and White Images. ****How to Use; When Started Running the Script, it takes a few mintues to download the ModelBinFile(129MBytes). While downloading, the "touchPad" has Not Appeared yet. After finished downloading, iPhone starts to colorize one of Black and White picture using the PreTrained Model, and then display the colorized pictures after finished colorizing. ****Recommendation;; the downloaded ModelBinFile (129MBytes) Exists at the SandBoxDocumentsPath/usrLocal/opencvDnnData. We Recommend you to BackUp the downloaded ModelBinFile to the Other place such as 'Pages' Folder using Apple 'Files.app'. **the APIs which we Added at this time;; pjOpenCV.setUseOpenCL() pjOpenCV.dnnNetLoadFromFilePath() pjOpenCV.dnnNetColorize() ****Citation;; @inproceedings{zhang2016colorful, title={Colorful Image Colorization}, author={Zhang, Richard and Isola, Phillip and Efros, Alexei A}, booktitle={ECCV}, year={2016} } @article{zhang2017real, title={Real-Time User-Guided Image Colorization with Learned Deep Priors}, author={Zhang, Richard and Zhu, Jun-Yan and Isola, Phillip and Geng, Xinyang and Lin, Angela S and Yu, Tianhe and Efros, Alexei A}, journal={ACM Transactions on Graphics (TOG)}, volume={9}, number={4}, year={2017}, publisher={ACM} }
More2022.0830.1251PM
August 30, 2022
the "General UnNamed Variable Version";; This was a Small Bug Fix in the original motivation. In the "tutorialSeason002/s001calc.py", For example, after you exectuted "1+1[Enter]", if you executed "s[Enter]", it returns "2". This was a Curious and Strange result. The Cause was that we used "s" as the Working Variable Name. Now "PeterJohn V4" uses the General UnNamed Variable "_", UnderScore, as the Working Variable Name. So This gives you guys the SideEffect Below. ****What we Offered you at this time;; In the "tutorialSeason002/s001calc.py", Now you Can Get the Most Recently Evaluated Value Using "_" ( UnderScore ). For example, after you exectuted "1+1[Enter]", if you executed "_[Enter]", it returns "2".
MoreNo, PeterJohn V4 PlayGrounds is not available for iPad users yet.
The app was developed by Yasushi Obata.
The app needs iOS 15.0 or later to function properly.
PeterJohn V4 PlayGrounds has no ratings yet.
The Primary Genre Of The Peterjohn V4 Playgrounds App Is Entertainment.
The latest version of the PeterJohn V4 PlayGrounds app is 2023.1219.2232.
The most recent update for PeterJohn V4 PlayGrounds was released on September 29, 2024.
The release date of the app was on August 9, 2024.
Suitable for children aged 4 and up, contains no objectionable material.
You can use the PeterJohn V4 PlayGrounds app in English.
Unfortunately, PeterJohn V4 PlayGrounds is not on Apple Arcade.
Unfortunately, in-app purchases are not part of PeterJohn V4 PlayGrounds.
No, PeterJohn V4 PlayGrounds does not support compatibility with Apple Vision Pro.
No, there are no commercial ads in PeterJohn V4 PlayGrounds.