architecture | Documents the architecture of the Readium project | Media library
kandi X-RAY | architecture Summary
kandi X-RAY | architecture Summary
All Readium implementations (mobile, desktop or Web) are split in two main modules, which use the Readium Web Publication Manifest to communicate together. On the Web, the Publication Server is responsible for serving a Readium Web Publication Manifest and the resources of a publication over HTTPS. In native apps, the Streamer is responsible for parsing packaged publications and exposing them using an in-memory model. On all platforms, the Navigator is meant to navigate in the resources of a publication and can adopt very different strategy based on the nature of the publication (ebooks, audiobooks and comics). These modules are not necessarily meant to be deployed on the same device or written in the same language, which lets developers select the best implementation based on their requirements.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of architecture
architecture Key Features
architecture Examples and Code Snippets
Community Discussions
Trending Discussions on architecture
QUESTION
I would like to extract the definitions from the book The Navajo Language: A Grammar and Colloquial Dictionary by Young and Morgan. They look like this (very blurry):
I tried running it through the Google Cloud Vision API, and got decent results, but it doesn't know what to do with these "special" letters with accent marks on them, or the curls and lines on/through them. And because of the blurryness (there are no alternative sources of the PDF), it gets a lot of them wrong. So I'm thinking of doing it from scratch in Tesseract. Note the term is bold and the definition is not bold.
How can I use Node.js and Tesseract to get basically an array of JSON objects sort of like this:
...ANSWER
Answered 2021-Jun-15 at 20:17Tesseract takes a lang
variable that you can expand to include different languages if they're installed. I've used the UB Mannheim (https://github.com/UB-Mannheim/tesseract/wiki) installation which includes a ton of languages supported.
To get better and more accurate results, the best thing to do is to process the image before handing it to Tesseract. Set a white/black threshold so that you have black text on white background with no shading. I'm not sure how to do this in Node, but I've done it with Python's OpenCV library.
If that font doesn't get you decent results with the out of the box, then you'll want to train your own, yes. This blog post walks through the process in great detail: https://towardsdatascience.com/simple-ocr-with-tesseract-a4341e4564b6. It revolves around using the jTessBoxEditor to hand-label the objects detected in the images you're using.
Edit: In brief, the process to train your own:
- Install jTessBoxEditor (https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/). Requires Java Runtime installed as well.
- Collect your training images. They want to be .tiffs. I found I got fairly accurate results with not a whole lot of images that had a good sample of all the characters I wanted to detect. Maybe 30/40 images. It's tedious, so you don't want to do TOO many, but need enough in order to get a good sampling.
- Use jTessBoxEditor to merge all the images into a single .tiff
- Create a training label file (.box)j. This is done with Tesseract itself.
tesseract your_language.font.exp0.tif your_language.font.exp0 makebox
- Now you can open the box file in jTessBoxEditor and you'll see how/where it detected the characters. Bounding boxes and what character it saw. The tedious part: Hand fix all the bounding boxes and characters to accurately represent what is in the images. Not joking, it's tedious. Slap some tv episodes up and just churn through it.
- Train the tesseract model itself
- save a file:
font_properties
who's content isfont 0 0 0 0 0
- run the following commands:
tesseract num.font.exp0.tif font_name.font.exp0 nobatch box.train
unicharset_extractor font_name.font.exp0.box
shapeclustering -F font_properties -U unicharset -O font_name.unicharset font_name.font.exp0.tr
mftraining -F font_properties -U unicharset -O font_name.unicharset font_name.font.exp0.tr
cntraining font_name.font.exp0.tr
You should, in there close to the end see some output that looks like this:
Master shape_table:Number of shapes = 10 max unichars = 1 number with multiple unichars = 0
That number of shapes should roughly be the number of characters present in all the image files you've provided.
If it went well, you should have 4 files created: inttemp
normproto
pffmtable
shapetable
. Rename them all with the prefix of your_language
from before. So e.g. your_language.inttemp
etc.
Then run:
combine_tessdata your_language
The file: your_language.traineddata
is the model. Copy that into your Tesseract's data folder. On Windows, it'll be like: C:\Program Files x86\tesseract\4.0\tessdata
and on Linux it's probably something like /usr/shared/tesseract/4.0/tessdata
.
Then when you run Tesseract, you'll pass the lang=your_language
. I found best results when I still passed an existing language as well, so like for my stuff it was still English I was grabbing, just funny fonts. So I still wanted the English as well, so I'd pass: lang=your_language+eng
.
QUESTION
I am using this template in my overleaf Report:
https://www.overleaf.com/project/60c75f5e234ec24080f0ea6a
If link is not accesible here is the code:
...ANSWER
Answered 2021-Jun-14 at 21:22The problem is that your document class already selects a bibliography style, which you can't change afterwards. Two workarounds:
use the style your document class sets by removing
\bibliographystyle{IEEEannot}
from your codeif you actually do need the other style, save
olplainarticle.cls
under a new name and change l.8\ProvidesClass{olplainarticle}[06/12/2015, v1.0]
to the new name, remove line 43/44\RequirePackage{natbib} \bibliographystyle{apalike}
from the new .cls file and then change\documentclass{olplainarticle}
to the new name
QUESTION
I'm following JetBrains's tutorial on an Apple Silicon computer. I installed boost with MacPorts (sudo port install boost), the version is 1.71 The build of tests.cpp file fails with the following error:
...ANSWER
Answered 2021-Jan-03 at 12:57Add
QUESTION
I have an app which compiles and runs fine in older Macs with Intel processors in physical devices & iOS simulators.
The same app also compiles and runs fine from newer Apple Silicon Mac with M1 processor with physical iPhone devices, but, it refuse to be compiled for iOS simulator.
Without simulator support, debugging turn around time gets gets really long so I am trying to solve this issue. Not to mention Xcode preview feature isn't working either which is annoying.
The first error that I encountered without making any changes (but moved from Intel Mac to M1 Mac) is like below.
building for iOS Simulator, but linking in dylib built for iOS, file '/Users/andy/workspace/app/Pods/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/WebRTC' for architecture arm64
The Cocoapods library that I am using is GoogleWebRTC, and according to its doc, arm64 should be supported so I am baffled why above error is getting thrown. As I have said before, it compiles fine in real device which I believe is running on arm64.
According to the doc..
This pod contains the WebRTC iOS SDK in binary form. It is a dynamic library that contains the armv7, arm64 and x86_64 slices. Bitcode is not supported. Our currently provided API’s are Objective C only.
I searched online and it appears there appears to be 2 workarounds for this issue.
- The first one is by adding
arm64
toExcluded Architectures
- The second option is to mark
Build Active Architecture Only
forRelease
build.
I don't exactly understand if above are necessary even when I am compiling my app on M1 Mac which is running under arm64 architecture, because the solution seems to be applicable only for for Intel Mac which does not support arm64 simulator, as for Intel Mac, simulators might have been running in x86_64, not with arm64, so solution #1 is not applicable in my case.
When I adapt the second change only, nothing really changes and the same error is thrown.
When I make both changes and tried building, I now get the following 2nd error during build. (not really 100% sure if I solved the 1st error / I might have introduced 2nd error in addition to 1st by adapting two changes)
Could not find module 'Lottie' for target 'x86_64-apple-ios-simulator'; found: arm64, arm64-apple-ios-simulator
The second library that I am using is lottie-ios and I am pulling this in with a swift package manager. I guess what is happening is that because I excluded arm64
in build setting for iOS simulator, Xcode is attempting to run my app in x86_64
. However, library is not supported running in x86_64
for some reason, and is throwing an error. I don't have much insights into what dictates whether or not library can run in x86_64 or arm64 so I couldn't dig to investigate this issue.
My weak conclusion is that GoogleWebRTC
cannot be compiled to run in iOS simulator with arm64
for some reason (unlike what its doc says), and lottie-ios
cannot be compiled to run in iOS simulator with x86_64
. So I cannot use them both in this case.
Q1. I want to know what kind of changes I can make to resolve this issue...
The app compiles and runs perfectly in both device & simulator when compiled from Intel Mac. The app compiles and runs fine in device when compiled from Apple Silicon Mac. It is just that app refuse to be compiled and run in iOS simulator from Apple Silicon Mac, and I cannot seem to figure out why.
Q2. If there is no solution available, I want to understand why this is happening in the first place.
I really wish not to buy old Intel Mac again just to make things work in simulator.
...ANSWER
Answered 2021-Mar-27 at 20:15Answering my own question in a hope to help others who are having similar problems. (and until a good answer is added from another user)
I found out that GoogleWebRTC actually requires its source to be compiled with x64
based on its source depo.
For builds targeting iOS devices, this should be set to either "arm" or "arm64", depending on the architecture of the device. For builds to run in the simulator, this should be set to "x64".
https://webrtc.github.io/webrtc-org/native-code/ios/
This must be why I was getting the following error.
building for iOS Simulator, but linking in dylib built for iOS, file '/Users/andy/workspace/app/Pods/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/WebRTC' for architecture arm64
Please correct me if I am wrong, but by default, it seems that Xcode running in Apple M1 silicon seems to launch iOS simulator with arm
arch type. Since my app did run fine on simulators in Intel Mac, I did the following as a workaround for now.
- Quit Xcode.
- Go to Finder and open Application Folder.
- Right click on Xcode application, select
Get Info
- In the "Xcode Info Window" check on
Open using Rosetta
. - Open Xcode and try running again.
That was all I needed to do to make my app, which relies on a library that is not yet fully supported on arm simulator, work again. (I believe launching Xcode in Rosetta mode runs simulator in x86 as well..?? which explains why things are working after making the above change)
A lot of online sources (often posted before M1 Mac launch on Nov/2020) talks about "add arm64 to Excluded Architectures
", but that solution seems to be only applicable to Intel Mac, and not M1 Mac, as I did not need to make that change to make things work again.
Of course, running Xcode in Rosetta mode is not a permanent solution, and Xcode slows down lil bit, but it is an interim solution that gets things going in case one of libraries that you are using is not runnable in arm64 simulator.. yet.
QUESTION
I'm following this tutorial on using MVVM with Retrofit
https://medium.com/@ronkan26/viewmodel-using-retrofit-mvvm-architecture-f759a0291b49
where the user places MutableLiveData inside the Repository class:
...ANSWER
Answered 2021-Mar-23 at 18:00The solution you're looking for depends on how your app is designed. There are several things you can try out:
- Keep your app modularized - as @ADM mentioned split your repository into smaller
- Move live data out of repository - it is unnecessary to keep live data in a repository (in your case singleton) for the entire app lifecycle while there might be only few screens that need different data.
- That's being said - keep your live data in view models - this is the most standard way of doing. You can take a look at this article that explains Retrofit-ViewModel-LiveData repository pattern
- If you end up with complicated screen and many live data objects you can still map entities into screen data representation with events / states /commands (call it as you want) which are pretty well described here. This way you have single
LiveData
and you just have to map your entities.
Additionaly you could use coroutines with retrofit as coroutines are recomended way now for handling background operations and have Kotlin support if you wanted to give it a try.
Also these links might halpe you when exploring different architectures or solutions for handling your problem architecture-components-samples or architecture-samples (mostly using kotlin though).
QUESTION
I am digging deeper to kubernetes architecture, in all Kubernetes clusters on-premises/Cloud the master nodes a.k.a control planes needs to be Linux kernels but I can't find why?
...ANSWER
Answered 2021-Jun-13 at 19:22There isn't really a good reason other than we don't bother testing the control plane on Windows. In theory it's all just Go daemons that should compile fine on Windows but you would be on your own if any problems arise.
QUESTION
I am using circleci to deploy an application, I deploy to both amd and arm architectures so my builds are multi-arch which I have been using docker buildx for. With the new arm support from circleci I was able to cut the time on this process down from sometimes 3 hours using quemu, to around 20 minutes by building both separately in their respective build environments (no need to use quemu when you build on the target arch). What I am running into is that when I run the buildx commands, one build will complete, push it's results to the repository and then the other completes and overwrites the previous. What I am trying to achieve is combining the built images into a single manifest to push together as if I built them at the same time. Is there a way to achieve what I am attempting without getting into direct modification of the manifest files? An example of the commands needed to achieve this would be extremely helpful!
Thanks in advance!
...ANSWER
Answered 2021-Jun-13 at 19:47There are two options I know of.
First, you can have buildx run builds on multiple nodes, one for each platform, rather than using qemu. For that, you would use docker buildx create --append
to add the additional nodes to the builder instance. The downside of this is you'll need the nodes accessible from the node running docker buildx
which likely doesn't apply to ephemeral cloud build environments.
The second option is to use the experimental docker manifest
command. Each builder would push a separate tag. And at the end of all those, you would use docker manifest create
to build a manifest list and docker manifest push
to push that to a registry. Since this is an experimental feature, you'll want to export DOCKER_CLI_EXPERIMENTAL=enabled
to see it in the command line. (You can also modify ~/.docker/config.json
to have an "experimental": "enabled"
entry.)
QUESTION
I decided to start learning web development and for some reason I decided to start at the start🙄 and so I spend the whole day reading about network architecture, different models, layers of TCP/IP and stuff. Came across something called REST APIs. Now, upon reading I understand what REST APIs are on a fundamental level. But one question that I can't seem to answer is so then are all, essentially, web services, RESTful, or are there other styles of architecture too to build a web app?
...ANSWER
Answered 2021-Jun-13 at 14:41Does everything on the World Wide Web use REST?
Sort of.
REST is an architectural style, the "coordinated set of architectural constraints" used in the development of the HTTP 1.1 standard in the 1990s. Notice that Roy Fielding, who describes RESTin the dissertation he published in 2000, is also the first author listed in RFC 2616 (and more recently, RFC 7230).
In chapter six of his dissertation, Fielding observes:
Like most real-world systems, not all components of the deployed Web architecture obey every constraint present in its architectural design.
The tracking of client application state is a common example; the web, as it is today, doesn't offer us a common, general purpose mechanism for tracking state in our clients. So instead, web designers resort to tracking that state on the server, either by using resources specific to a user (see REST mismatches in URI) or by using cookies as a hidden mechanism for tracking history on the server (see REST mismatches in HTTP).
In other words, the web we use every day isn't a perfect expression of the REST architectural style.
Further more, you have ideas like SOAP or GraphQL, where important semantic information about a message is not expressed in a standardized form, which means that our general purpose components cannot assess the semantics of the messages and take intelligent actions.
are all, essentially, web services, RESTful
No - not unless you limit yourself to a definition of "web services" that excludes implementations that violate REST.
Finding web implementations that are architecturally aligned with remote procedure calls, rather than REST, is common. See Fielding 2008. Special note: read the comments, which contain a lot of useful Q and A.
QUESTION
This is a part of my code, before data augmentation, model.fit
was working, however after augmentation of data i'm getting this error;
AttributeError: module 'scipy.ndimage' has no attribute 'interpolation'
This is the list of all imported libraries;
...ANSWER
Answered 2021-Jun-13 at 10:55I found the problem. Problem was that scipy
was missing in my anaconda virtual environment. I thought scipy
was installed when I saw;
AttributeError: module 'scipy.ndimage' has no attribute 'interpolation'
Thanks for the tip @simpleApp. And I'm sorry to bother you with the mistake of absent-mindedness... Solution is the installing scipy
.
QUESTION
I have a hyper table for exchange candle data set up using TimescaleDB.
TimescaleDB official image
timescale/timescaledb:latest-pg12
set up and running with Docker with the exact version stringstarting PostgreSQL 12.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.2.1_pre1) 10.2.1 20201203, 64-bit
Python 3 client
The table has 5 continuous aggregate views set up like here and around 15 colums
Running the following query is slow (count query generated with SQLAlchemy):
...ANSWER
Answered 2021-Jun-13 at 05:10you can try the approximate_row_count() function (https://docs.timescale.com/api/latest/analytics/approximate_row_count/) which gives an immediate result.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install architecture
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page