remarks | Extract annotations from PDF | Document Editor library
kandi X-RAY | remarks Summary
kandi X-RAY | remarks Summary
Extract your marks (highlights, scribbles, annotations) and convert them to Markdown, PDF, PNG, and SVG. remarks works with PDFs annotated on reMarkable paper tablets, both 1st and 2nd generation.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
- Run remarks on the given directory
- Add smart highlight annotations
- Process a PDF document
- Draw annotated markers on a page
remarks Key Features
remarks Examples and Code Snippets
Community Discussions
Trending Discussions on remarks
QUESTION
Yet another question about the style and the good practices. The code, that I will show, works and do the functionality. But I'd like to know is it ok as solution or may be it's just too ugly?
As the question is a little bit obscure, I will give some points at the end.
So, the use case.
I have a site with the items. There is a functionality to add the item by user. Now I'd like a functionality to add several items via a csv-file.
How should it works?
- User go to special upload page.
- User choose a csv-file, click upload.
- Then he is redirected to the page that show the content of csv-file (as a table).
- If it's ok for user, he clicks "yes" (button with "confirm_items_upload" value) and the items from file are added to database (if they are ok).
I saw already examples for bulk upload for django, and they seem pretty clear. But I don't find an example with an intermediary "verify-confirm" page. So how I did it :
- in views.py : view for upload csv-file page
ANSWER
Answered 2021-May-28 at 09:27a) Even if obviously it could be better, is this solution is acceptable or not at all ?
I think it has some problems you want to address, but the general idea of using the filesystem and storing just filenames can be acceptable, depending on how many users you need to serve and what guarantees regarding data consistency and concurrent accesses you want to make.
I would consider the uploaded file temporary data that may be lost on system failure. If you want to provide any guarantees of not losing the data, you want to store it in a database instead of on the filesystem.
b) I pass 'uploaded_file' from one view to another using "request.session" is it a good practice? Is there another way to do it without using GET variables?
There are up- and downsides to using request.session.
- attackers can not change the filename and thus retrieve data of other users. This is also the reason why you should not use a GET parameter here: If you used one, attackers could simpy change that parameter and get access to files of other users.
- users can upload a file, go and do other stuff, and later come back to actually import the file, however:
- if users end their session, you lose the filename. Also, users can not upload the file on one device, change to another device, and then go on with the import, since the other device will have a different session.
The last point correlates with the leftover files problem: If you lose your information about which files are still needed, it makes cleaning up harder (although, in theory, you can retrieve which files are still needed from the session store).
If it is a problem that sessions might end or change because users clear their cookies or change devices, you could consider adding the filename to the UserProfile
in the database. This way, it is not bound to sessions.
c) At first my wish was to avoid to save the csv-file. But I could not figure out how to do it? Reading all the file to request.session seems not a good idea for me. Is there some possibility to upload the file into memory in Django?
You want to store state. The go-to ways of storing state are the database or a session store. You could load the whole CSVFile and put it into the database as text. Whether this is acceptable depends on your databases ability to handle large, unstructured data. Traditional databases were not originally built for that, however, most of them can handle small binary files pretty well nowadays. A database could give you advantages like ACID guarantees where concurrent writes to the same file on the file system will likely break the file. See this discussion on the dba stackexchange
Your database likely has documentation on the topic, e.g. there is this page about binary data in postgres.
d) If I have to use the tmp-file. How should I handle the situation if user abandon upload at the middle (for example, he sees the confirmation page, but does not click "yes" and decide to re-write his file). How to remove the tmp-file?
Some ideas:
- Limit the count of uploaded files per user to one by design. Currently, your filename is based on a timestamp. This breaks if two users simultaneously decide to upload a file: They will both get the same timestamp, and the file on disk may be corrupted. If you instead use the user's primary key, this guarantees that you have at most one file per user. If they later upload another file, their old file will be overwritten. If your user count is small enough that you can store one leftover file per user, you don't need additional cleaning. However, if the same user simultaneusly uploads two files, this still breaks.
- Use a unique identifier, like a UUID, and delete the old stored file whenever the user uploads a new file. This requires you to still have the old filename, so session storage can not be used with this. You will still always have the last file of the user in the filesystem.
- Use a unique identifier for the filename and set some arbitrary maximum storage duration. Set up a cronjob or similar that regularly goes through the files and deletes all files that have been stored longer than your specified maximum duration. If a user uploads a file, but does not do the actual import soon enough, their data is deleted, and they would have to do the upload again. Here, your code has to handle the case that the file with the stored filename does not exist anymore (and may even be deleted while you are reading the file).
You probably want to limit your server to one file stored per user so that attackers can not fill your filesystem.
e) Small additional question : what kind of checks there are in Django about uploaded file? For example, how could I check that the file is at least a text-file? Should I do it?
You definitely want to set up some maximum file size for the file, as described e.g. here. You could limit the allowed file extensions, but that would only be a usability thing. Attackers could also give you garbage data with any accepted extension.
Keep in mind: If you only store the csv as text data that you load and parse everytime a certain view is accessed, this can be an easy way for attackers to exhaust your servers, giving them an easy DoS attack.
Overall, it depends on what guarantees you want to make, how many users you have and how trustworthy they are. If users might be malicious, you want to keep all possible kinds of data extraction and resource exhaustion attacks in mind. The filesystem will not scale out (at least not as easily as a database).
I know of a similar setup in a project where only a handful of priviliged users are allowed to upload stuff, and we can tolerate deletion of all temporary files on failure. Users will simply have to reupload their files. This works fine.
QUESTION
MERGE /*+ GATHER_PLAN_STATISTICS*/
INTO ATM_REQUEST ATM
USING ATM_STATUS_VIEW ST
ON ( ATM.accountno = ST.accountno
AND atm.status IS NULL
AND atm.remarks IS NULL)
WHEN MATCHED
THEN
UPDATE SET ATM.STATUS = ST.STATUS, ATM.REMARKS = ST.REMARKS;
...ANSWER
Answered 2021-Jun-15 at 09:12As it says, you can't update column(s) referenced in ON
clause.
Perhaps you meant to do this:
QUESTION
I want your suggestions to start a simple software developement. I'm an intern student and i want to build, preferably, something that can be acceced with a user authentication to a specific number of users < 5 so that each one of them can access the analysis of the data that concerns him. Preferably :
- I want my users to get to the app through the browser
- The users are those who will provide data to the app through an upload file button so this latter can output the whole analysis
- the app should have a professional look
I'm supposed to work with these four-five peapole to determine what they want to see so i can prepare all the analysis code that corresponds to the right feeded data. genrally the data will have csv excel format.
I've start working with R shiny then I built a single shiny app for control and mangement director that contains a dahsboard with analysis/viZ elements. Then i figured out that I cannot add the feature of multiple users and neither the authotication feature. then I've start learning django but i realized that it's quite harder to do it in a month. I searched for django-plotly-library but I always hesitate to work and learn until the end.
well, now i'm open to learn anything that can solve this issue. I've been hesitating for a month to choose the right technology. I appreciate your suggestions and remarks.
...ANSWER
Answered 2021-Jun-13 at 23:24Django User's Guide gives you most of the answers, mainly regarding the authentication. https://docs.djangoproject.com/en/3.2/topics/auth/ Corey Schafer does high quality videos, here on the authentication: https://www.youtube.com/watch?v=q4jPR-M0TAQ For the professional look : bootstrap + django-crispy-forms, it's very convenient. To upload data: https://www.youtube.com/watch?v=vs6dXL9Wp7s&t=882s
QUESTION
I have an XML file I am reading from and trying to deserialize into an object. I get this error when I try:
System.InvalidOperationException: 'There is an error in XML document (2, 2).' InvalidOperationException: was not expected.
Here is the XML file:
...ANSWER
Answered 2021-Jun-11 at 17:40I think there are a number of issues here, more specifically with the Generated Code for the XML.
In Visual Studio, I created a new Class and copied your XML content and used Edit -> Paste Special -> Paste XML as Classes.
Here's the generated code from that exercise:
QUESTION
I am trying to create a numpy matrix with each matrix element as output element of a function, using numpy's fromfunction
. Below is my code and it fails with an error message IndexError: arrays used as indices must be of integer (or boolean) type
. I read some resources on Stackoverflow which said that the documentation is misleading (Parameters to numpy's fromfunction) and it sometimes doesn't work as expected. After reading these threads, I suspect that the problem is that I access two arrays, q_x
and rs
in the input function. Any idea on how to get rid of the error?
ANSWER
Answered 2021-Jun-10 at 07:28The link that you attached already addressed the problem perfectly. Could you elaborate on the case that it doesn't work?
So the problem here is that np.fromfunction
is handing over the whole meshgrid instead of a single index.
QUESTION
I am trying to automate few test cases from different test cases in sequential manner. i.e. one after another test class execution.
In some of cases, web application is not getting closed/quit. i.e. driver instance not closing/quitting. I am trying to quit/close driver in @AfterClass method as well as test class level as well but its not working in both cases.
In TestNG Suite results, its showing as its tried to executed but webdriver instances are NOT closed and new webpage instance is open.
For reference I have shared code for 1st two test classes.
Please check below snippet for code:
...ANSWER
Answered 2021-Jun-09 at 09:55You can add alwaysRun = true in @AfterClass annotation. like @AfterClass(alwaysRun=true).
If your test classes are independent of each other then it is good to use separate session for each test class. In this case you have to write @AfterClass method in each of test class to close individual session.
QUESTION
We are using system-versioned temporal table in our Entity Framework Core application. This works really well but we are experiencing problems when creating a test.
I have been following this guide using SQLite in-memory databases to test an EF Core application from Microsoft.
https://docs.microsoft.com/en-us/ef/core/testing/sqlite#using-sqlite-in-memory-databases
The problem is that Sqlite
will throw an exception for SysStartTime
. This is expected since the property is marked as prop.ValueGenerated = Microsoft.EntityFrameworkCore.Metadata.ValueGenerated.OnAddOrUpdate;
in DbContext
and is normally handled by Sql Server. Is there anyway to make this work in SQLite?
SqliteException: SQLite Error 19: 'NOT NULL constraint failed: User.SysStartTime'.
User:
...ANSWER
Answered 2021-Jan-12 at 00:19Solved it like this in protected override void OnModelCreating(ModelBuilder modelBuilder)
:
QUESTION
According to the Microsoft Docs, the program should throw an IOException
if the destination directory where the zip file is to be extracted already exists. In addition, the "Remarks" section says, "The destination directory cannot already exist." However,
ANSWER
Answered 2021-Jun-02 at 15:28Looks like a documentation error. I opened two GitHub issues for this, one for the source code comments and one for the docs page that's created from them
.NET Core is open source which means we can check the actual source code to see what's going on.
ZipFile.ExtractToDirectory actually calls the ZipFileExtensions.ExtractToDirectory(ZipArchive, String) method:
QUESTION
I am beginner, in wsdl. When Visual Studio generate service reference from wsdl.
Relevant part:
ANSWER
Answered 2021-Jun-01 at 15:00Ignore the ArrayOfEmail
name and focus on the declarations in your XSD. You have the following:
QUESTION
When I was converting a program from Java to C#, I noticed that the string comparison seems to behave differently in some cases:
In Java
...ANSWER
Answered 2021-May-30 at 20:21Java does the same as the 'ordinal' comparision in c#.
The java documentation says 'It compares strings on the basis of Unicode value of each character in the strings.'
For non-surrogate unicode characters this is the same as string.CompareOrdinal
in c#, which "Compares two String objects by evaluating the numeric values of the corresponding Char objects in each string."
I'm not sure if they're the same for high unicode codepoints (surrogate pairs) or not, but I suspect they might be, since both Java and c# uses 16 bits char types.
The 'standard' c# string.Compare
, on the other hand, performs 'culture-sensitive' comparision. Which means that it 'uses the current culture to obtain culture-specific information such as casing rules and the alphabetic order of individual characters'.
You can read more about this at the documentation for System.Globalization.CompareOptions
.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install remarks
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