Web Design – How to best display a multitude of information or data on a single web page?

A quick article appears in this article: 14 Awesome High Content Websites for Inspiration

It proposes several principles, reformulated here:

White space – allow the content room (and the eyes of your visitors) to breathe

Boxes, borders and graphic planes – segment information into visual categories

Intuitive search method – Let your users directly access the information they need

Grids – Although this is not always necessary for understanding, keeping the content in a rigid and consistent structure reduces the effort needed to process it.

Strong hierarchy of information – Establish a coherent design language using content types (presentation texts, excerpts, calls for actions)

Visual hierarchy – The relative importance of different domains and content elements can be visually involved in many ways, ranging from typographic processing (titles, subtitles, prints, etc.) to image size and saturation, placement etc.

I would add another important thing related to the hierarchical points.

Content Decisions User-centric – Try the best, through tests and user analysis, to determine the content that users really want / need and use this information to influence decisions.

information architecture – Timesheet Entries UX

How to distinguish new time entries

I have a timesheet that looks like this:

What works well customers can see all their time inputs on one screen and work well by reading the hours of the week at a glance.

However, the problem arises when a user has to enter his timesheets and can work on 5 different assignments, which must be added via the "Add in time" drop-down menu.

History of the user:

As a user, I fill out my timesheet at the end of the week and she totals 34.5 hours.

Then 2 days later, I have to go back to adding extra time for another task I worked on and forgot about. The total number of hours per week is now 42 hours.

34.5 hours – Assignment 1

7.5 hours – Assignment 2

However, I do not know to which project the total time has been allocated.

What is the best way to distinguish this new information that has been added

  • New time added from different assignments
  • How to know at a glance what time was assigned to which task

I hope it is clear ..

attack prevention – How to defend against the theft of identification information in EC2 via the API

AWS has a feature called instance metadata, which on EC2 gives you access to AWS credentials through HTTP calls:


The functionality itself is intentional, so technically not a vulnerability. The risk is also indicated in the documentation:

If you use services that use instance metadata with IAM roles, be careful not to expose your credentials when the services are making HTTP calls on your behalf. The types of services that might expose your credentials include HTTP proxies, HTML / CSS validation services, and XML processors that support XML inclusion.

As long as an application can not be deceived by an attacker to make such a request and to produce its response, it is certainly a practical feature. Unfortunately, it is a common source of attacks.

Of course, a server must first correctly check all URLs, but in the spirit of defense in depth, I wonder if it is possible to disable it, or to allow it only at startup (before opening ports).


  • Is it technically possible to disable this feature? In other words, how can I make sure that the requests for are blocked?
  • If this is technically possible, are there any disadvantages to blocking it?
  • Is there a way to always have access to the safe parts of the API, but not the critical elements? Maybe by whitelisting specific paths? For example, I see the point of allowing /meta-data/spot/instance-action, which tells you if your point instance EC2 has been programmed for termination.

Promotion and information on SEO / Tools | Promotion Forum

NBK * Twitch said:

One of the links you gave me was asking me. – http://www.stonetemple.com/articles/top … deas.shtml

number 3.

He says that buying links can make you score and banned? I really do not think this is true since many forums (including fp) do it.

There are one or two others that make me wonder. An exchange of links … every site I saw did this …

Yes, buying backlinks can make you banned. This is a method of getting around organic methods to get a better PR. You do the work, rather than people legitimately related to your site. Of course, if Google does not consider this a major threat to his system, he will ignore you. It's usually the PR6 + links that make a splash.

Exchange links or ways to increase public relations. That's the question that the Google Web Spam team has to discover. That's why Google recommends using nofollow tags to make sure they are not flagged as a way to increase public relations.

How to provide information about the checkbox

The user needs additional information other than the label of the check box and I have several horizontally adjacent check boxes. How should I display the information when the user is about to check the check box.

Mobile – How to invalidate customer identification information with the help of CSOM

I need to implement the option in the Xamarin.Forms application to login as a different user to the remote SP's website.
But the problem is that no matter the username and password used. The SP2013 server still allows the client request and returns a valid response.
So, how could I invalidate the login information of the previous user?

Have a simple XF application with a main page to test (the SP server implements NTML authentication):

public partial class MainPage: ContentPage
public main page ()
InitializeComponent ();

protected override async void OnAppearing()

    await Task.Delay(2000);

    var ctx = new ClientContext("https://mysite.com/") { Credentials = new NetworkCredential("valid-userbane", "password", "domain") };
    var valid = await IsCredentialsValid(ctx);
    InfoLabel.Text = $"User credentials {(valid ? "VALID" : " INVALID")} 1";

    await Task.Delay(2000);

    var ctx2 = new ClientContext("https://mysite.com/") { Credentials = new NetworkCredential("non-valid-user", "password", "domain") };
    valid = await IsCredentialsValid(ctx2);
    InfoLabel.Text = $"User credentials {(valid ? "VALID" : " INVALID")} 2";

public static async Task IsCredentialsValid(ClientContext ctx)
        var lists = ctx.Web.Lists;
        await ctx.ExecuteQueryAsync();
        Console.WriteLine($"Lists count: {lists.Count}");
        return true;
    catch (Exception e)
        return false;


2013 – Compare (display the form) the information of 2 lists

I would like to "compare" 2 list items from different lists. (with the same columns)

On the same page, I want to display the names (related to the item) (list 1) on the site on the left. And I want to show the form of displaying an item after clicking on one of the names. (now, it opens in a new window or in a dialog box and the second one is no longer possible)

Then select one on the right and display (the form) next to it.

You can now compare the articles yourself.

enter the description of the image here

I hope my question is clear. Can any one help me?

python – Can any one give me information about my encryption program?

I'm calling Valentino, I'm 14 and I just created with a friend an encryption program.

I do not have many people yet to try it and I was wondering if anyone would try it and give me feedback for further development.

I have created a website for this http://agencryption.ecwid.com

This site contains high-end products, but it is still not available for the next 3 months.

Thank you in advance.

#                                                                     #
#                  AGENCRYPTION program V.1.1                         #
#            Made by Elio Hayman and Valentino Magniette              #
#                           Have fun                                  #
#                                                                     #

version = 'Version 1.1'
from random import *
import tkinter as tk

current_key = ''

account = ''
in_debug = False
def debug(text):
    if in_debug:
        print('(Debug)', text) 

key = ''
def decrypt(crypted):
    global current_key
    key = current_key
    if key == '':
        print('(Error) Please insert a key before utilisation. To do so, do readkey .')
    basemsg = ''
    key_list = ()
    while not key == '':
        key = key(5:)
    new_key = ()
    for i in key_list:
        new_key_thing = ()
    key = new_key
    searchlength = 1
    msgleft = crypted
    found = False
    while len(msgleft) > 0:
        searchlength = 0
        found = False
        while found == False:
            if searchlength == 0 and len(msgleft) > 0:
                for x in key:
                    if found == False:
                        if msgleft(0) in x(1:):
                            basemsg = basemsg + x(0)
                            msgleft = msgleft(1:)
                            found = True
            elif searchlength > 0 and len(msgleft) > 0:
                for x in key:
                    if found == False:
                        if msgleft(:searchlength-1) in x(1:):
                            basemsg = basemsg + x(0)
                            msgleft = msgleft(searchlength-1:)
                            found = True
            searchlength += 1
    basemsg = basemsg.replace('^', ' ')
    return basemsg
def encrypt(message):
    global current_key
    key = current_key
    if key == '':
        print('(Error) Please insert a key before utilisation. To do so, do readkey .')
    message = message.replace(' ', '^')
    endmsg = ''
    key_list = ()
    while not key == '':
        key = key(5:)
    new_key = ()
    for i in key_list:
        new_key_thing = ()
    for char in message:
        for x in new_key:
            if x(0) == char:
                endmsg = endmsg + x(randint(1, len(x)-1))
    return endmsg

def readkey(input_key):
    all_chars = 'aabcdefghijklmnopqrstuvwxyz1234567890&²é~"#'{((-|è`_\çà@))=}°+.+-*/,?;:!§ù%*µ$£¤^¨ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    key_list = ()
    if len(input_key) == 779:
        print('Key loading...')
        parts = list()
        for i in range(109):
            key_part = input_key(:5)
            letter = key_part(0)
            part1 = key_part(1:3)
            part2 = key_part(3:5)
            list_thing = list()
            input_key = input_key(5:)

        print('Key inserted')
        print('Caution, this key will only stay in the program as long as it is running or when replaced by another one')
        print('(Error) This key is unsupported by the program. Make sure it is correct and that you are using the latest version.')
        return None
    return ''.join(parts)
def genkey():
    all_chars = 'aabcdefghijklmnopqrstuvwxyz1234567890&²é~"#'{((-|è`_\ç^à@))=}°+.+-*/,?;:!§ù%*µ$£¤^¨ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    char_list = list('aabcdefghijklmnopqrstuvwxyz1234567890&²é~"#'{((-|è`_\ç^à@))=}°+.+-*/,?;:!§ù%*µ$£¤^¨ABCDEFGHIJKLMNOPQRSTUVWXYZ')
    all_chars = ''.join(char_list)
    key = list()
    security = 2
    for x in range(len(all_chars)*security):
        valid = False
        while valid == False:
            char1 = all_chars(randint(0,35))
            char2 = all_chars(randint(0,35))
            if not (char1 + char2) in key:
                key.append(char1 + char2)
                valid = True
    speshul_chars_letters = list()
    for i in range(117):
        valid = False
        while valid == False:
            char1 = all_chars(randint(0,35))
            char2 = all_chars(randint(0,35))
            if not (char1 + char2) in key or (char1 + char2) in speshul_chars_letters:
                speshul_chars_letters.append(char1 + char2)
                valid = True
    key_list = ()
    for i in all_chars:
        chars = (i)
        for xx in range(security):
            del key(0)
    key_text = ''
    key_text_list = ()
    for y in key_list:
    speshul_chars_letters_text = ''.join(speshul_chars_letters)
    return ''.join(key_text_list) + speshul_chars_letters_text

import tkinter as tk
from time import *
mw = tk.Tk()

mw.title('AGE v1.1')
mw.resizable(0, 0)

back = tk.Frame(master=mw,bg='#24b1db')
back.pack(fill=tk.BOTH, expand=1)

mode = 0

def purgescreen():
    if mode == 1:
    elif mode == 2:
    elif mode == 3:
    elif mode == 4:
    elif mode == 5:
    elif mode == 6:
    elif mode == 7:

def encrypt_shortcut():
    message = encryption_text_input.get("1.0",'end-1c')
    encrypted = encrypt(message)

def encryption_button():
    global encryption_text_input
    global encryption_text_output
    global encrypt_main
    global mode
    mode = 1
    encryption_text_input = tk.Text(back, height=10, width=70)
    encryption_text_input.place(relx=.25 , rely=0)

    encryption_text_output = tk.Text(back, height=10, width=70)
    encryption_text_output.place(relx=.25, rely=.6)

    encrypt_main = tk.Button(master=back, text='Encrypt', command=encrypt_shortcut)
    encrypt_main.config(height=3, width=15)
    encrypt_main.place(relx=.5, rely=.4)

def decrypt_shortcut():
    message = decryption_text_input.get("1.0",'end-1c')
    decrypted = decrypt(message)

def decryption_button():
    global decryption_text_input
    global decryption_text_output
    global decrypt_main
    global mode
    mode = 2
    decryption_text_input = tk.Text(back, height=10, width=70)
    decryption_text_input.place(relx=.25 , rely=0)

    decryption_text_output = tk.Text(back, height=10, width=70)
    decryption_text_output.place(relx=.25, rely=.6)

    decrypt_main = tk.Button(master=back, text='Decrypt', command=decrypt_shortcut)
    decrypt_main.config(height=3, width=15)
    decrypt_main.place(relx=.5, rely=.4)

def keygen_shortcut():
    key = genkey()
    key = ''.join(key)

def apply_shortcut():
    key = keygen_text_output.get("1.0","end-1c")
    global current_key
    current_key = key

def keygen_button():
    global keygen_text_output
    global keygen_main
    global mode
    global directapply_main
    mode = 3
    keygen_text_output = tk.Text(back, height=15, width=70)
    keygen_text_output.place(relx=.25 , rely=.4)

    keygen_main = tk.Button(master=back, text='Generate Key', command=keygen_shortcut)
    keygen_main.config(height=3, width=15)
    keygen_main.place(relx=.4, rely=.2)

    directapply_main = tk.Button(master=back, text='Apply Key', command=apply_shortcut)
    directapply_main.config(height=3, width=15)
    directapply_main.place(relx=.6, rely=.2)

def keyread_shortcut():
    key = keyread_text_input.get("1.0","end-1c")
    global current_key
    current_key = key

def keyread_button():
    global keyread_text_input
    global keyread_main
    global mode
    mode = 4

    keyread_text_input = tk.Text(back, height=15, width=70)
    keyread_text_input.place(relx=.25, rely=.1)

    keyread_main = tk.Button(master=back, text='Insert Key', command=keyread_shortcut)
    keyread_main.config(height=3, width=15)
    keyread_main.place(relx=.5, rely=.7)

def info_button():
    global info_main
    global info_copyright
    global info_website
    global info_version
    global info_terms
    global mode
    mode = 5

    info_main = tk.Label(master=back, text='This program is made by n Valentino Magniette and iWaroz.', bg='#24b1db')
    info_main.config(height=3, width=70)
    info_main.place(relx=.25, rely=.1)

    info_copyright = tk.Label(master=back, text='Copying this program or resseling it n without permission from its creators is forbidden.', bg='#24b1db')
    info_copyright.config(height=3, width=70)
    info_copyright.place(relx=.25, rely=.3)

    info_terms = tk.Label(master=back, text='AGencryption and its creators are not responsible for any legal problems regarding n  encrypting sensible documentation that the authorities want decrypted. ', bg='#24b1db')
    info_terms.config(height=3, width=70)
    info_terms.place(relx=.25, rely=.5)

    info_website = tk.Label(master=back, text='You can get the program for free at: http://realtasting.com/AGE-Version1.exe', bg='#24b1db')
    info_website.config(height=3, width=70)
    info_website.place(relx=.25, rely=.7)

    info_version = tk.Label(master=back, text='Version 1.1', bg='#24b1db')
    info_version.config(height=3, width=70)
    info_version.place(relx=.25, rely=.9)

def help_button():
    global help_main
    global mode
    mode = 6

    help_main = tk.Label(master=back, text='If any help is needed. n Go to our discord with the link n https://discord.gg/YVDBudA', bg='#24b1db')
    help_main.config(height=3, width=50)
    help_main.place(relx=.35, rely=.5)

global welcome_main
mode = 7

welcome_main = tk.Label(master=back, text='Welcome to AGE n This is a program which is used for encryption n You can encrypt an unlimited ammount of text securely for free n To start, you will need an encryption/decryption key for it to work n Have fun!!', bg='#24b1db')
welcome_main.config(height=10, width=50)
welcome_main.place(relx=.35, rely=.35)

encryption_main = tk.Button(master=back, text='Encryption', command=encryption_button)
encryption_main.config(height=4, width=20)
encryption_main.place(relx=.095, rely=.07, anchor="c")

decryption_main = tk.Button(master=back, text='Decryption', command=decryption_button)
decryption_main.config(height=4, width=20)
decryption_main.place(relx=.095, rely=.21, anchor="c")

generator_main = tk.Button(master=back, text='Key Generator', command=keygen_button)
generator_main.config(height=4, width=20)
generator_main.place(relx=.095, rely=.35, anchor="c")

reader_main = tk.Button(master=back, text='Key reader', command=keyread_button)
reader_main.config(height=4, width=20)
reader_main.place(relx=.095, rely=.49, anchor="c")

information_main = tk.Button(master=back, text='Information', command=info_button)
information_main.config(height=4, width=20)
information_main.place(relx=.095, rely=.63, anchor="c")

help_main = tk.Button(master=back, text='Help', command=help_button)
help_main.config(height=4, width=20)
help_main.place(relx=.095, rely=.77, anchor="c")

quit_main = tk.Button(master=back, text='Quit', command=mw.destroy)
quit_main.config(height=4, width=20)
quit_main.place(relx=.095, rely=.91, anchor="c")


information architecture – Where to access archived items / lists given this provision

I have an application layout without side navigation. It has just a horizontal navigation with 5 tabs (some are grayed out). Each tab is really its own module.

I have a task module where a user can create lists and each list has todos.

Now, I think about when a user has finished with all the todos of a list, he should be able to archive this list to make it disappear.

How can the user access the archived list? Below is where I am now

enter the description of the image here

I see these purple spaces available

enter the description of the image here

The left and the right are decent spaces to use, but then I have to move them elsewhere on the mobile (not enough space horizontally).

The top space above task lists is not bad and will shrink more easily on mobile.

I know that at the end of the day, user tests will give me the most definitive answer. At this point, I'm just trying to make my "first guess" an informed answer.

Ideas / examples about this situation?

5th dnd – A question on the profitability in dnd because impossible to find the information

Thanks for contributing a response to the Games Stack Exchange role-playing games!

  • Please make sure to respond to the question. Provide details and share your research!

But to avoid

  • Ask for help, clarification, or answer other answers.
  • Make statements based on the opinion; save them with references or personal experience.

Use MathJax to format equations. MathJax reference.

To learn more, read our tips for writing good answers.